如下所示反转字符向量列表的有效方法是什么?

输入

lov <- list(v1=c("a", "b"), v2=c("a", "c"), v3=c("a"))

预期的
list(a=c("v1", "v2", "v3"), b=c("v1"), c=c("v2"))

类似于 Revert list structure ,但涉及向量:

最佳答案

我们可以将 list 转换为 data.frame(使用 stackmelt 中的 library(reshape2)),然后通过 'd1' 中的 'values' 对 'ind' 列进行 split

d1 <- stack(lov)
split(as.character(d1$ind), d1$values)

或者如果上面的方法很慢,我们可以通过每个rep元素的names复制(length)'lov'的list(lengths给出每个元素的vectorlength输出)并通过split' .
split(rep(names(lov), lengths(lov)), unlist(lov))

关于r - 反转 R 中的字符向量列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35827008/

10-13 00:09