R:按一列生成可能的排列表
R: generate possible permutation tables by one column
我有一个 table 看起来像这样:
Indikaatori nimi Alamkriteerium Kriteerium Skoor
1 Indikaator 1 1.1 1 100
2 Indikaator 2 1.2 1 100
3 Indikaator 3 1.3 1 100
4 Indikaator 4 1.1 1 0
5 Indikaator 5 2.1 2 0
6 Indikaator 6 2.1 2 0
... and so on...
我需要根据第一列创建 table 所有可能的排列。
总共有 50 个指标,我想从中选择 49 个并获得所有可能的组合以及所选元素的其他数据列。
50 个元素中有 49 个元素,我将得到总共 50 个排列,但我想自动创建所有这些 tables 而无需手动创建(稍后也需要 48 个元素)。
有什么方法可以自动生成这 50 个 table 以及所选元素的相应数据?
感谢所有帮助和指点!
此解决方案使用循环,与 R 中的矢量化操作相比速度相当慢,但它会以 data.frames.
列表的形式为您提供所需内容
datatable = read.table(textConnection(
"2 Indikaator 2 1.2 1 100
3 Indikaator 3 1.3 1 100
4 Indikaator 4 1.1 1 0
5 Indikaator 5 2.1 2 0
6 Indikaator 6 2.1 2 0"))
x = rep(list(data.frame(NULL)),times = 2^nrow(datatable))
a = 1
for (i in 1:nrow(datatable)){
sets = combn(nrow(datatable),i)
for (j in 1:ncol(sets)){
x[[a]] = datatable[sets[,j],]
a = a+1
}
}
View(x[[10]])
# The following will give you a list of fifty data frames,
# Each data frame has a 49 row subset of the original
listoftables <- apply(combn(1:50, 49), 2, FUN = function(x) df[x,])
我有一个 table 看起来像这样:
Indikaatori nimi Alamkriteerium Kriteerium Skoor
1 Indikaator 1 1.1 1 100
2 Indikaator 2 1.2 1 100
3 Indikaator 3 1.3 1 100
4 Indikaator 4 1.1 1 0
5 Indikaator 5 2.1 2 0
6 Indikaator 6 2.1 2 0
... and so on...
我需要根据第一列创建 table 所有可能的排列。 总共有 50 个指标,我想从中选择 49 个并获得所有可能的组合以及所选元素的其他数据列。 50 个元素中有 49 个元素,我将得到总共 50 个排列,但我想自动创建所有这些 tables 而无需手动创建(稍后也需要 48 个元素)。
有什么方法可以自动生成这 50 个 table 以及所选元素的相应数据?
感谢所有帮助和指点!
此解决方案使用循环,与 R 中的矢量化操作相比速度相当慢,但它会以 data.frames.
列表的形式为您提供所需内容datatable = read.table(textConnection(
"2 Indikaator 2 1.2 1 100
3 Indikaator 3 1.3 1 100
4 Indikaator 4 1.1 1 0
5 Indikaator 5 2.1 2 0
6 Indikaator 6 2.1 2 0"))
x = rep(list(data.frame(NULL)),times = 2^nrow(datatable))
a = 1
for (i in 1:nrow(datatable)){
sets = combn(nrow(datatable),i)
for (j in 1:ncol(sets)){
x[[a]] = datatable[sets[,j],]
a = a+1
}
}
View(x[[10]])
# The following will give you a list of fifty data frames,
# Each data frame has a 49 row subset of the original
listoftables <- apply(combn(1:50, 49), 2, FUN = function(x) df[x,])