我有一个数据框,我只想将一列中的值随机洗洗1000次,同时将其余各列中的值保持不变以进行随机森林分类的随机置换测试。虽然我知道如何使用基本软件包中的sample
生成1个排列,但如何一次获得1000个呢?以下是数据外观的屏幕截图(它具有约5万行和28个变量)。
可以使用以下方法生成一些样本数据:
data=data.frame(rep(1:3, each=10), rep(2:4, each=10), rep(10:12, each=10))
names(data)<-c("aH", "bH", "cH")
答案 0 :(得分:2)
虽然我无法评论您的分析的有效性,但我会为您提供解决方案。
我们使用lapply
在矢量1:100上循环,以生成一列的100个可重现排列,将其与其余数据绑定在一起,并将所有样本存储在列表中。
data=data.frame(rep(1:3, each=10), rep(2:4, each=10), rep(10:12, each=10))
names(data)<-c("aH", "bH", "cH")
test <- lapply(1:100, function(x){
set.seed(x)
cbind.data.frame(data[,1:2], sample(data[,3]))
})
另一种选择是combinat
包及其功能permn()
,它会生成输入矢量的所有可能排列。