使用R中的for循环复制()

时间:2018-03-28 08:22:41

标签: r

我想在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个其他列表,每个列表包含不同的样本

2 个答案:

答案 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矩阵,其中每列包含从5000p(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)
}

但是,如上所述,不使用循环可能更好。