我需要帮助来开发一个代码,用于从R中的数据框创建所有数据集组合。
E.g。 dataframe =
| A B C |
| 1 4 7 |
| 2 5 8 |
| 3 6 9 |
数据集组合:A,B,C,AB,AC,BC,ABC
data1 =
| A |
| 1 |
| 2 |
| 3 |
data2 =
| B |
| 4 |
| 5 |
| 6 |
data3 =
| C |
| 7 |
| 8 |
| 9 |
data4 =
| A B |
| 1 4 |
| 2 5 |
| 3 6 |
data5 =
| A C |
| 1 7 |
| 2 8 |
| 3 9 |
data6 =
| B C |
| 4 7 |
| 5 8 |
| 6 9 |
data7 = |一个
| A B C |
| 1 4 7 |
| 2 5 8 |
| 3 6 9 |
亲切的问候。
答案 0 :(得分:0)
以下是使用lapply
和combn
(获取变量名称组合)的解决方案
colNameSet <- unlist(lapply(seq_len(length(df)),
function(i) combn(names(df), i, simplify=FALSE)), recursive=FALSE)
myList <- lapply(colNameSet, function(x) df[x])
1 ... k的向量,其中k是变量的数量,被馈送到lapply
,告诉combn
每次迭代中要进行的变量组合的大小。由于simplify = FALSE语句,每个combn
调用的结果都是一个列表。因此lapply
的结果是嵌套列表。带有recursive = FALSE的unlist
会使列表变平。
第二行根据每个元素的内容运行此变量名称列表和数据框子集。
返回
myList
[[1]]
A
1 1
2 2
3 3
[[2]]
B
1 4
2 5
3 6
...
[[6]]
B C
1 4 7
2 5 8
3 6 9
[[7]]
A B C
1 1 4 7
2 2 5 8
3 3 6 9
数据强>
df <- data.frame(matrix(1:9, 3))
names(df) <- LETTERS[1:3]