我正在做一个项目,我试图从一组相关研究中随机选择个别研究。我成功地在相关研究的数据框中划分了一个主数据文件。
##Subset by independent study, determined by integer assignment in column 18
tmp <- split(DATAFILE, DATAFILE$V18)
lapply(1:length(tmp),
function(x) assign(paste("study.", x, sep = ""),
tmp[[x]], envir = .GlobalEnv))
现在我想从每个数据框中获取一个randow行,但我无法使其工作。 我试过一个for循环,它告诉我&#34;找不到功能我&#34;:
random <-NULL
for (i in tmp){
i(sample(nrow(i)), 1,)
random<-rbind(random,i)
print(df)
}
我想将每个数据帧中的1行随机样本放入一个新的数据框中,所以我尝试了一下#/ p>
sapply(df.list, function(x) sample(nrow(i), 1,))
哪个也不起作用。
感谢您的帮助
答案 0 :(得分:0)
最好将数据保存在列表中,而不是将一堆对象分配给工作区。您的sapply很接近,但这只会为您提供列表中每个数据集所需的随机行的索引。
接下来,您需要从列表中的每个数据集中选择采样行,因此可以使用lapply
返回行列表,并将它们全部绑定在一起:
datl <- split(mtcars, f = mtcars$gear)
idx <- sapply(datl, function(x) sample(nrow(x), 1))
do.call(rbind, lapply(1:3, function(x) datl[[x]][idx[x], ]))
mpg cyl disp hp drat wt qsec vs am gear carb
Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6