【问题标题】:In R, how to combine component-wise two lists which components have the same names?在 R 中,如何按组件组合两个具有相同名称的组件列表?
【发布时间】:2011-06-29 19:45:38
【问题描述】:

这是我的数据:

l1 <- list(a=1, b=2)
l2 <- list(a=10, b=20)

我想以组件方式组合它们。例如,如果我想将 l1 的每个组件的值添加到 l2 中同一组件的值,我会这样做:

l <- list(a=l1$a+l2$a, b=l1$b+l2$b)

如果现在我有几个组件,我可以这样做:

l <- list()
for(c in names(l1))
    l[[c]] <- l1[[c]] + l2[[c]]

但是,我的列表可以包含很多组件,并且我可能需要使用两个以上的列表(每个列表总是与其他列表具有相同的组件名称)。

由于 R 中不推荐使用“for”循环,是否有任何方法可以使用 lapply、merge 或 by...之类的方法?

谢谢!

【问题讨论】:

    标签: list r


    【解决方案1】:

    您似乎在寻找Map

    identical(l, Map("+", l1, l2))
    # [1] TRUE
    

    等同于:

    mapply("+", l1, l2, SIMPLIFY=FALSE)
    

    【讨论】:

    • 完美,谢谢!这是我第一次需要使用高阶函数式编程函数 Map,因此我将使用它来代替 mapply。
    猜你喜欢
    • 1970-01-01
    • 2022-07-25
    • 2020-01-22
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    相关资源
    最近更新 更多