在R软件中的for循环中生成随机数

时间:2014-10-20 19:47:19

标签: r for-loop random dataframe

我想问一下如何在 R 软件的for循环中生成随机数。 我正在尝试制作一个包含两列IDtime的表格。每个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

2 个答案:

答案 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 replicatesapply的包装器,它基本上是一个隐藏的for循环。相反,您也可以尝试使用矢量化方法,例如:

ID$time <- 0:6
ID[ID$time == 6, "time"] <- runif(100, 6, 7)