我想问一下如何在 R 软件的for
循环中生成随机数。
我正在尝试制作一个包含两列ID
和time
的表格。每个ID
都有7 time
s:0,1,2,3,4,5
,最后一个数字必须是随机的,介于6到7之间。
ID<-data.frame(rep(1:100,each=7))
for (i in unique(ID)){
ID$time <- c(0,1,2,3,4,5, x <-runif(1,6,7), 100)[ID==i]
}
弹出错误消息:
Error in `$<-.data.frame`(`*tmp*`, "time", value = c(0, NA, NA, NA, NA, :
replacement has 8 rows, data has 700
答案 0 :(得分:0)
我想你想要这个:
set.seed(123)
ID <- data.frame( time = c(0,1,2,3,4,5), x = runif(100,6,7))
您不想使用&#39;&lt; - &#39;对于data.frame
但也许这就是你想要的:
ID <- data.frame( time = rep( c(0,1,2,3,4,5,6), each=100) , x = runif(700,6,7))
(用自然语言描述你想要的东西总是一个好主意。)
答案 1 :(得分:0)
您可以尝试使用replicate
,例如
ID$time <- c(replicate(100, c(0:5, runif(1, 6, 7))))
Althoguh replicate
是sapply
的包装器,它基本上是一个隐藏的for
循环。相反,您也可以尝试使用矢量化方法,例如:
ID$time <- 0:6
ID[ID$time == 6, "time"] <- runif(100, 6, 7)