合并数字列表中存在的矩阵列

时间:2017-08-23 07:57:56

标签: r list matrix vector collapse

我创建了一个类似下面的列表,其中包含字符串中特定字符的所有组合。创建列表的代码如下:

library(stringr)
test = str_locate_all("TTEST" , "T")
ind1 = lapply( lapply(1:nrow(test[[1]]), combn , x=test[[1]][,1])  , t )
ind1[[1]] = rbind(ind1[[1]], 0 )

和我看到的列表

[[1]]
     [,1]
[1,]    1
[2,]    2
[3,]    5
[4,]    0

[[2]]
     [,1] [,2]
[1,]    1    2
[2,]    1    5
[3,]    2    5

[[3]]
     [,1] [,2] [,3]
[1,]    1    2    5

我现在想要的是组合/折叠列(其中不止一个)并取消列出整个对象,以便创建一个看起来像c(1,2,5,0,1:1)的最终向量: 2,1:5,2:5,1:2:5)并且稍后可以使用expand.grid()函数。

试图用以下代码部分地解决它,但是":"角色的位置与想要的不同。

do.call(paste, c( as.data.frame(ind1[[2]]) ,collapse=":") )
[1] "1 2:1 5:2 5"

1 个答案:

答案 0 :(得分:1)

这是一个基于R的想法,我们将列表元素转换为数据框,并使用do.call粘贴它们,即

unlist(lapply(ind1, function(i) do.call(paste, c(as.data.frame(i), sep = ':'))))
#[1] "1"     "2"     "5"     "0"     "1:2"   "1:5"   "2:5"   "1:2:5"