首页 > 解决方案 > 操作列表组件

问题描述

生成名称列表的新组合。list我使用以下R代码生成了一个:

names1 <- c("A", "B", "C")
lst <- lapply(1:length(names1), function(x) combn(names1, x))
lst

> list
[[1]]
     [,1] [,2] [,3]
[1,] "A"  "B"  "C" 

[[2]]
     [,1] [,2] [,3]
[1,] "A"  "A"  "B" 
[2,] "B"  "C"  "C" 

[[3]]
     [,1]
[1,] "A" 
[2,] "B" 
[3,] "C" 

现在,我想把这个列表变成一个包含以下 7 个组件的向量,就像这个:

newlst <- c("A", "B", "C", "A, B", "A, C", "B, C", "A, B, C") 

换句话说,我想将每一列中的值组合成新向量的一个组成部分。unlist(lst)不会工作,因为它会在没有任何组合的情况下产生 12 个单独的 As、B 和 C。任何建议,将不胜感激。

标签: rlist

解决方案


该函数combn接受一个函数。所以如果你通过了toStringunlist你会得到你的输出,即

unlist(lapply(1:length(names1), function(x) combn(names1, x, toString)))
#[1] "A"       "B"       "C"       "A, B"    "A, C"    "B, C"    "A, B, C"

推荐阅读