r - 如何将 `combn` 向量的每个元素的每个组合放入单个列表中

标签 r list combn

我未能找到如何进行此特定转换。有谁有一个聪明的方法来实现这一目标?抱歉,如果我在某个地方错过了明显的答案。谢谢

# start with a single vector
1:3

# achieve this desired structure, containing every combination
# from combn( x , 1 ) thru combn( x , length( x ) )
list(
    1 ,
    2 , 
    3 ,
    c( 1 , 2 ) ,
    c( 1 , 3 ) ,
    c( 2 , 3 ) ,
    c( 1 , 2 , 3 )
)

最佳答案

循环遍历值序列,得到combn向量的 m指定为序列值 split通过 'col',将嵌套列表展平为 listvectordo.call(cunname

unname(do.call(c, lapply(1:3, function(x) {
      x1 <- combn(1:3, x)
      split(x1, col(x1))})))
#[[1]]
#[1] 1

#[[2]]
#[1] 2

#[[3]]
#[1] 3

#[[4]]
#[1] 1 2

#[[5]]
#[1] 1 3

#[[6]]
#[1] 2 3

#[[7]]
#[1] 1 2 3

或者正如评论中提到的@IceCreamToucan

do.call(c, lapply(1:3, function(x) combn(1:3, x, simplify = FALSE)))

关于r - 如何将 `combn` 向量的每个元素的每个组合放入单个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53671565/

相关文章:

r - 具有相同功能名称的软件包

r - 如何在R中的对数图中绘制一个圆圈?

python - python Pandas/numpy 的 R 的 match() 等价物是什么?

list - 如何在保留顺序的同时删除列表中的重复元素?

r - 在 r 中导出矩阵

python - 查找元素的索引

list - 根据匹配的对象属性从列表创建列表

R:如何从数据集的组合中执行更复杂的计算?

r - 从 5 列中找出 3 行的所有组合的所有总和

r - 在 R 中,如何在不丢失数据的情况下将 combn() 的结果从矩阵转换为向量?