我希望以频率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)
吗?
谢谢
答案 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))
}
}