R语言 合并数值列表中存在的矩阵列

xdyibdwo  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(166)

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

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: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"
yhxst69z

yhxst69z1#

这里有一个通过base R的想法,我们将列表元素转换为 Dataframe ,并使用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"

相关问题