合并存在于数字列表中的矩阵列
merging matrix columns that exists inside a numerical list
我创建了一个如下所示的列表,其中包含字符串中特定字符的所有组合。创建列表的代码如下:
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
我现在想要的是 combine/collapse 列(凡是超过一列的列)并取消列出整个对象,以便创建一个看起来像 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"
这是一个通过 base 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"
我创建了一个如下所示的列表,其中包含字符串中特定字符的所有组合。创建列表的代码如下:
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
我现在想要的是 combine/collapse 列(凡是超过一列的列)并取消列出整个对象,以便创建一个看起来像 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"
这是一个通过 base 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"