R- 子集化或打印 5x14 数据帧中所有可能的列对

R- Subset or print all possible column pairs from a 5x14 dataframe

我有一个包含 14 列和 5 行的 R 数据框(没有 headers 和行名称),我想提取所有可能的列对,如果可能的话,它们是唯一的。

例如我的输入数据框:

    C1  C2  C3  C4  C5  C6  C7  C8  C9  C10 C11 C12 C13 C14
A   1   1   1   0   1   0   1   0   0   1   0   1   0   0
B   0   1   0   0   1   0   0   1   1   0   1   1   0   0
C   1   0   1   1   1   0   0   0   0   1   1   1   1   1
D   1   1   1   1   1   1   1   0   0   0   1   1   0   0
E   1   0   0   1   0   1   1   1   0   1   1   1   1   1

我想得到所有可能的 91 个唯一对,例如:

    C1  C2
A   1   1
B   0   1
C   1   0
D   1   1
E   1   0
    C1  C3
A   1   1
B   0   0
C   1   1
D   1   1
E   1   0

依此类推,如果可能的话在不同的数据帧中

谢谢!

我们可以用combn做成对组合

out <- combn(df1, 2, simplify = FALSE)

-输出

> length(out)
[1] 91
> out[[1]]
  C1 C2
A  1  1
B  0  1
C  1  0
D  1  1
E  1  0

数据

df1 <- structure(list(C1 = c(1L, 0L, 1L, 1L, 1L), C2 = c(1L, 1L, 0L, 
1L, 0L), C3 = c(1L, 0L, 1L, 1L, 0L), C4 = c(0L, 0L, 1L, 1L, 1L
), C5 = c(1L, 1L, 1L, 1L, 0L), C6 = c(0L, 0L, 0L, 1L, 1L), C7 = c(1L, 
0L, 0L, 1L, 1L), C8 = c(0L, 1L, 0L, 0L, 1L), C9 = c(0L, 1L, 0L, 
0L, 0L), C10 = c(1L, 0L, 1L, 0L, 1L), C11 = c(0L, 1L, 1L, 1L, 
1L), C12 = c(1L, 1L, 1L, 1L, 1L), C13 = c(0L, 0L, 1L, 0L, 1L), 
    C14 = c(0L, 0L, 1L, 0L, 1L)), class = "data.frame", row.names = c("A", 
"B", "C", "D", "E"))