我有一个类似下面的列表:
# 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
创建的第二级元素是这些列表的元素答案 0 :(得分:5)
这就足够了:
mat <- do.call(rbind, lstVec)
result <- split(mat[,2], mat[,1])
do.call
和rbind
将行lstVec
的结果按行堆叠到矩阵中(感谢G. Grothendieck指出这不是数据框),然后是{{ 1}} split
分割mat[,2]
。
正如Aaron所说,你想要嵌套列表,有点奇怪。但你可以得到它
mat[,1]
我不确定lapply(result, as.list)
有多好。但获得rbind
的另一种方法是
mat