【问题标题】:Invert a List of Character Vectors in R反转R中的字符向量列表
【发布时间】: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


    【解决方案1】:

    我们可以将list 转换为data.frame(使用stackmelt 来自library(reshape2)),然后将split 'd1' 中的'values' 列转换为'ind' 列。

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

    或者如果上述方法很慢,我们可以通过每个list元素的length复制(rep)'lov'的nameslengths给出vector的输出length 的每个元素)和split unlisting 'lov'。

    split(rep(names(lov), lengths(lov)), unlist(lov))
    

    【讨论】:

    • 第二种更好,因为它不涉及添加包
    • @cannin 第一个也不需要任何包。我指的是来自reshape2melt。否则,stackbase R 函数。
    猜你喜欢
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 2016-04-10
    相关资源
    最近更新 更多