双循环随机抽样

时间:2011-09-29 20:09:04

标签: r

我希望以频率i (0:36)生成得分j。我希望j循环是随机数。我做的是:

j<-1:70
for(i in 0:36) {
  for (j in 1:sample(j)) {
    print(i,j)
  }
}

但是我收到了错误。我应该放sample(j,1, replacement=TRUE)而不是sample(j)吗? 谢谢

3 个答案:

答案 0 :(得分:2)

如果我理解正确,你希望i中的每个元素复制一到70次(随机选择复制值的次数)。

i <- 0:36
j <- 1:70

#number of times to replicate each i
times <- sample(j, length(i), replace=FALSE)
result <- rep(i, times)

是否使用replace = FALSE取决于您如何完成采样(例如replace = FALSE确保每次j最多选择一次。

答案 1 :(得分:2)

如果您想要随机数,则应使用runif。它具有最小/最大值来控制范围。您也可以使用sample,但最好使用sample.int(max, 1)

j<-70
for(i in 0:36) {
  for (k in 1:runif(1,1,j)) {
    cat(i,k, "\n")
  }
}

然后内部循环不应该覆盖j(应该是常量) - 所以我将循环变量重命名为k。 ...... print不会打印多个这样的参数 - 但是cat会这样做!

答案 2 :(得分:1)

尝试

for(i in 0:36) {
  for(k in 1:sample(70, 1)) {
    print(c(i,k))
  }
}