【发布时间】:2016-03-06 12:49:08
【问题描述】:
如下所示的反转字符向量列表的有效方法是什么?
输入
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,但涉及向量:
【问题讨论】:
标签: r
如下所示的反转字符向量列表的有效方法是什么?
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,但涉及向量:
【问题讨论】:
标签: r
我们可以将list 转换为data.frame(使用stack 或melt 来自library(reshape2)),然后将split 'd1' 中的'values' 列转换为'ind' 列。
d1 <- stack(lov)
split(as.character(d1$ind), d1$values)
或者如果上述方法很慢,我们可以通过每个list元素的length复制(rep)'lov'的names(lengths给出vector的输出length 的每个元素)和split unlisting 'lov'。
split(rep(names(lov), lengths(lov)), unlist(lov))
【讨论】:
reshape2 的melt。否则,stack 是 base R 函数。