【发布时间】:2018-03-18 17:03:10
【问题描述】:
我想生成与我的列的排列数一样多的数据帧,假设一列保持未排列(在所有生成的数据帧中保持相同的索引位置)。这是主要的数据框:
data1 <- data.frame("Alpha"=c(1,2), "Beta"=c(2,2), "Gamma"=c(4,8), "Delta"=c(22,3))
data1
Alpha Beta Gamma Delta
1 1 2 4 22
2 2 2 8 3
假设第 3 列 (Gamma) 必须保持其位置,对于有限数量的排列,很容易使用列索引并像这样手动排列它们:
data2 <- data1[c(1,4,3,2)]
data2
Alpha Delta Gamma Beta
1 1 22 4 2
2 2 3 8 2
以此类推,直到达到 4 列中的 3 列的所有排列:
data3 <- data1[c(4,1,3,2)]
data4 <- data1[c(4,2,3,1)]
data5 <- data1[c(2,4,3,1)]
data6 <- data1[c(2,1,3,4)]
data7...
它效率低下,是大型数据集的噩梦。如何在不手动输入所有排列的情况下快速生成所有数据帧?我认为permn 或combn 很有用,但我无法更进一步。
【问题讨论】:
-
寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。
标签: r dataframe permutation combn