我已经查看过以前的帮助帖子,并且没有找到帮助我解决这个问题的东西。我知道for循环可能是生成相同数据的更好方法,但我有兴趣通过重复循环(大多数只是作为练习)来完成这项工作,并且我正在努力解决这个问题。
所以我循环创建了100次rnorm观察的3次迭代,每次从5到25更改为平均值。
i <- 1
repeat{
x <- rnorm(100, mean = j, sd = 3)
j <- 5*i
i <- i + 4
if (j > 45) break
cat(x, "\n",j, "\n")
}
我为每次迭代(总共300个值)获取组合保存输出的所有修改都失败了。救命啊!
答案 0 :(得分:1)
您可以使用lapply来获取此信息:
lapply(c(5,25,45), function(x){
rnorm(100, mean = x, sd = 3)
})
这将为您提供包含3个元素的列表: 每个包含从相应的正态分布中抽取的100个观测值。
答案 1 :(得分:0)
取决于您想要的数据结构。 对于列表,它将是:
r = list()
repeat{
r[[length(r)+1]] = list(x,j)
}
然后:r[[1]][[1]]
将为1个循环的x,r [[1]] [[2]]将为j。
答案 2 :(得分:0)
由于您知道要存储多少个观察值,因此可以预先分配该大小的矩阵,并在生成时将数据存储在其中。
# preallocate the space for the values you want to store
x <- matrix(nrow=100, ncol=3)
# save the three means in a vector
j_vals <- c(5,25,45)
# if you really need a repeat loop you can do it like so:
i <- 1
repeat {
# save the random sample in a column of the matrix x
x[,i] <- rnorm(100, mean = j_vals[i], sd = 3)
# print the random sample to the console (you can omit this)
cat(x[,i], "\n",j_vals[i], "\n")
i <- i+1
if (i > 3) break
}
你应该得到一个矩阵x
,随机样本存储在列中。您可以访问每个列,例如x[,1]
,x[,2]
等。