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

时间:2016-02-07 01:55:23

标签: r loops random sample na

所以我有一个由0和1组成的数据框。我想做一个循环,随机抽样38个观察结果并用NA替换它们。我成功地进行了一次迭代,其中原始矢量观察被替换为以下一行代码:

char* [0]

Data Frame

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

数据集:

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

1 个答案:

答案 0 :(得分:0)

也许是这样的:

# 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)