将随机 NA 作为循环插入 R 中的向量中

Insert random NAs in a vector in R as a Loop

所以我有一个由值 0 和 1 组成的数据框。我想制作一个循环,随机抽取 38 个这些观察值并将它们替换为 NA。我成功地进行了一次迭代,其中原始向量观测值被替换为以下一行代码:

foo$V2[sample(seq(foo$V2), 38)] <- NA

但是,我想执行此操作 20 次,并将每次迭代都编译为单个对象中的单独列。最终,我将有一个 20 列数据框,每个数据框有 191 个观察值,每个观察值有 38 个随机替换的 NA。在循环结束时,我希望将数据框作为文本文件写出。感谢您在正确方向上提供的任何帮助。

数据集:

https://drive.google.com/file/d/0BxfytpfgCdAcdEQ2LWFuVWVqMVU/view?usp=sharing

也许是这样的:

# Fake data
set.seed(1998)
foo = data.frame(V2=sample(0:1, 191, replace=TRUE))

# Create 20 samples where we replace 38 randomly chosen values with NA
n = 20 
samples = as.data.frame(replicate(n, {
  x = foo$V2
  x[sample(seq_along(x), 38)] = NA
  x
  }))

然后你可以写成任何你喜欢的格式。例如:

write.table(samples, "samples.txt")
write.csv(samples, "samples.csv", row.names=FALSE)