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

Kon*_*rad 0 string r list strsplit

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

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

我想到达以下结构列表:

lstRes <- list(levelA = list(1:3),
               lvelB = list(1:3))
Run Code Online (Sandbox Code Playgroud)

笔记

该列表具有以下特征:

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

小智 5

这足够了:

mat <- do.call(rbind, lstVec)    
result <- split(mat[,2], mat[,1])
Run Code Online (Sandbox Code Playgroud)

do.callrbind的结果栈lstVec由行成矩阵(由于G.格罗滕迪克指出这个不是数据帧),则split分割mat[,2]通过mat[,1].

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

lapply(result, as.list)
Run Code Online (Sandbox Code Playgroud)

我不确定有多好rbind.但另一种获得的方式mat

mat <- matrix(unlist(lstVec), ncol = 2, byrow = TRUE)
Run Code Online (Sandbox Code Playgroud)