我想在R中创建大量样本并将它们存储在变量中。我做了一些研究,可能最好的方法是使用replicate()
record <- replicate(5000, sample(c(0,1), size = 60, replace = T,prob=c(0.9,0.1)))
我的问题是我如何使用for循环?我可以使用for循环创建5000个样本但是如何存储它们?
x <- 'something here' #I want to store them in x
for (i in 1:5000)
{record <- sample(c(0,1), size = 60, replace = T,prob=c(0.9,0.1))
'x += record'}
编辑: X + =记录线令人困惑。这是我最好的解释,在python中我创建了一个列表,在该列表中有5000个其他列表,每个列表包含不同的样本
答案 0 :(得分:4)
我认为使用for
循环没有意义;也不需要replicate
。
您可以使用
直接绘制5000 * 60
个独立样本
smpl <- sample(c(0, 1), size = 60 * 5000, replace = TRUE, prob = c(0.9, 0.1))
如果要将smpl
存储在矩阵中,可以将矢量重新设为matrix
,例如
mat <- matrix(smpl, ncol = 5000)
这将为您提供60 x 5000
矩阵,其中每列包含从5000
和p(0) = 0.9
的分布中抽取的p(1) = 0.1
个随机样本。
这比使用for
循环或replicate
快。
答案 1 :(得分:1)
怎么样?
x <- list() # or x <- c() or x <- data.frame()
for (i in 1:5000){
record <- sample(c(0,1), size = 60, replace = T,prob=c(0.9,0.1))
x[[i]] <- record # or x <- c(x, record) or x <- rbind(x, record)
}
但是,如上所述,不使用循环可能更好。