在 R 中将 data.frame 切成不同的两半
Cut a data.frame into unique halves in R
我想将下面 data.frame
中的列(一个玩具示例)分成大小相同的两半。但我想获得所有可能的 unique 一半(每个一半 = 一个单独的 data.frame
).
例如,在前半部分,我们可能有 [q1
、q2
、q3
与 q4
、q5
、q6
],在后半部分,我们可能有 [q1
、q4
、q3
与 q2
、q5
、q6
],在第三个可能的半场中,我们可能有 [q1
、q3
、q6
与 q2
、q4
、q5
], ...(每 3 列成为一个新的 data.frame
)。
我的理解是最终输出必须存储为结果 data.frame
的 list
。这有可能在 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,具有相等的数据帧的一半。
我想将下面 data.frame
中的列(一个玩具示例)分成大小相同的两半。但我想获得所有可能的 unique 一半(每个一半 = 一个单独的 data.frame
).
例如,在前半部分,我们可能有 [q1
、q2
、q3
与 q4
、q5
、q6
],在后半部分,我们可能有 [q1
、q4
、q3
与 q2
、q5
、q6
],在第三个可能的半场中,我们可能有 [q1
、q3
、q6
与 q2
、q4
、q5
], ...(每 3 列成为一个新的 data.frame
)。
我的理解是最终输出必须存储为结果 data.frame
的 list
。这有可能在 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,具有相等的数据帧的一半。