转换通过strsplit获得的列表以合并常见类别

时间:2016-12-14 21:03:26

标签: r string list strsplit

我有一个类似下面的列表:

# Initial object
vec <- c("levelA-1", "levelA-2", "levelA-3",
         "levelB-1", "levelB-2", "levelB-3")
lstVec <- strsplit(x = vec, split = "-")

我想得到以下结构的清单:

lstRes <- list(levelA = list(1:3),
               lvelB = list(1:3))

注释

该清单具有以下特征:

  • 第一级元素转换为不同的列表
  • 通过strsplit创建的第二级元素是这些列表的元素

1 个答案:

答案 0 :(得分:5)

这就足够了:

mat <- do.call(rbind, lstVec)    
result <- split(mat[,2], mat[,1])

do.callrbind将行lstVec的结果按行堆叠到矩阵中(感谢G. Grothendieck指出这不是数据框),然后是{{ 1}} split分割mat[,2]

正如Aaron所说,你想要嵌套列表,有点奇怪。但你可以得到它

mat[,1]

我不确定lapply(result, as.list) 有多好。但获得rbind的另一种方法是

mat