在R中生成多个排列

时间:2018-09-18 02:51:02

标签: r random permutation

我有一个数据框,我只想将一列中的值随机洗洗1000次,同时将其余各列中的值保持不变以进行随机森林分类的​​随机置换测试。虽然我知道如何使用基本软件包中的sample生成1个排列,但如何一次获得1000个呢?以下是数据外观的屏幕截图(它具有约5万行和28个变量)。 enter image description here

可以使用以下方法生成一些样本数据:

data=data.frame(rep(1:3, each=10), rep(2:4, each=10), rep(10:12, each=10))
names(data)<-c("aH", "bH", "cH")

1 个答案:

答案 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(),它会生成输入矢量的所有可能排列。