我创建了一个类似下面的列表,其中包含字符串中特定字符的所有组合。创建列表的代码如下:
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"
答案 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"