在 R 中将 data.frame 切成不同的两半

Cut a data.frame into unique halves in R

我想将下面 data.frame 中的列(一个玩具示例)分成大小相同的两半。但我想获得所有可能的 unique 一半(每个一半 = 一个单独的 data.frame ).

例如,在前半部分,我们可能有 [q1q2q3q4q5q6],在后半部分,我们可能有 [q1q4q3q2q5q6],在第三个可能的半场中,我们可能有 [q1q3q6q2q4q5], ...(每 3 列成为一个新的 data.frame)。

我的理解是最终输出必须存储为结果 data.framelist。这有可能在 R 中实现吗?

dat <- data.frame(q1=1:5, q2=5:1, q3=2:6, q4=6:2, q5=1:5, q6 =2:6)

我们可以使用 combn 创建所有可能的列号组合,一次取 3 个。使用组合对数据帧进行子集化。

combn(seq_along(dat), ncol(dat)/2, function(x) 
         list(dat[, x], dat[, -x]), simplify = FALSE)

每个列表的长度为 2,具有相等的数据帧的一半。