首页 > 解决方案 > 选择范围内的随机数作为新列

问题描述

我正在尝试在数据框中创建一个新列,values该列将是一个范围内的随机数。举个例子:

min <- sample(1:10, 10)
max <- sample(11:20, 10)

dt <- data.frame(min=min, max=max)

dt$value <- sample(dt$min:dt$max,1)

这给了我一条错误消息。

我该怎么做?谢谢

标签: rrandom

解决方案


好吧,它会发出警告(不是错误),因为您向:函数提供了两个向量而不是两个数字。所以它只是使用第一个元素(在这个例子中是2和)。19我想这可能是你所追求的:

dt$value <- sapply(1:nrow(dt), function(x) sample(dt$min[x]:dt$max[x], 1))

或者,如果您使用的是 dplyr,则更清楚:

dt %>%
    rowwise() %>%
    mutate(value = sample(min:max, 1))

推荐阅读