在R中生成多个排列

问题描述 投票:0回答:1

我有一个数据框,我想将其中的值仅在一列中混洗1000次,同时保持其余列中的值保持完整,以进行随机森林分类的​​随机置换测试。虽然我知道如何使用基础包中的sample生成1个排列,但我如何一次获得1000?下面是数据外观的截图(它有大约50k行和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")
r random permutation
1个回答
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(),它生成输入向量的所有可能的排列。

© www.soinside.com 2019 - 2024. All rights reserved.