问题描述
我想将下面data.frame
中的列(一个玩具示例)分成两个相等大小的两半。但是我想获得所有可能的 unique 一半(每一半 =单独的data.frame
)。
例如,在前半段,我们可能有[q1
,q2
,q3
与q4
,q5
,{{1 }}],在第二个可能的一半中,我们可能会比较[q6
,q1
,q4
与q3
,q2
,q5
] ,在第三个可能的一半中,我们可能有[q6
,q1
,q3
和q6
,q2
,q4
]。 。(每3列成为新的q5
)。
我的理解是,最终输出必须作为结果data.frame
中的list
存储。是否可以在data.frame
中实现?
R
解决方法
我们可以使用combn
来创建一次取3的列号的所有可能组合。使用这些组合对数据框进行子集化。
combn(seq_along(dat),ncol(dat)/2,function(x)
list(dat[,x],dat[,-x]),simplify = FALSE)
每个列表的长度为2,具有相等的数据帧的一半。