将data.frame切成R中的独特部分

问题描述

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

例如,在前半段,我们可能有[q1q2q3q4q5,{{1 }}],在第二个可能的一半中,我们可能会比较[q6q1q4q3q2q5] ,在第三个可能的一半中,我们可能有[q6q1q3q6q2q4]。 。(每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,具有相等的数据帧的一半。