【问题标题】:How can I do list summation element-wise in R如何在 R 中逐个元素地进行列表求和
【发布时间】:2017-05-18 04:38:49
【问题描述】:

这与

非常相似

Is there an R function for the element-wise summation of the matrices stored as elements in single list object?

如何在 R 中按元素进行列表求和?

例如,我想要

temp1<-list(c(rep(0,6)),c(1,2,3,4,5,6))
temp2<-list(c(2,3,4,5,6,7))

让步

 3,5,7,9,11,13     

简单的temp1[[2]] + temp2 是行不通的。有什么特殊的配方吗?

【问题讨论】:

  • 请提供一个可重现的示例来说明您的列表是什么样的。此外,这是否必须推广到您有多个列表或每个列表中有多个项目的情况?或者你只是从不同的列表中添加两个向量?
  • 我正在尝试添加不同的列表:一个是列表的子集,另一个只是列表本身。这里发布的列表是什么样的 temp1 由列表 2 组成,我只想要 temp1[[[2]]] 而另一个列表由数字组成
  • 列表中的两个向量是否具有相同的长度?您可以简单地尝试使用 mapply,例如:list(mapply(FUN = sum,temp2,temp1[[2]])).
  • 这看起来像 + 运算符就足够了。您是否尝试过类似mapply("+",a,b) 的列表是ab
  • temp1[[2]] + temp2[[1]]

标签: r list


【解决方案1】:

我们可以使用Map

Map(`+`, temp1, temp2)[[2]]

【讨论】:

    【解决方案2】:

    假设列表中的两个向量长度相同:

    lst=list(a=c(1,2,3,4,5,6),b=c(2,3,4,5,6,7))   
    list(mapply(FUN = sum,lst$a,lst$b))'.
    

    【讨论】:

      【解决方案3】:

      在我的例子中,我有一个超过 2 个元素的列表,其中每个元素都是一个 2x2 矩阵。我想将这些 2x2 矩阵中的每一个相加,我可以这样做:

      my_list &lt;- c(temp1, temp2) #make one list of the separate sublists

      Reduce("+", my_list) #add the sublists together, element-wise

      如果您希望或不想包含三个子列表中的第一个,您可以分别使用Reduce("+", my_list)Reduce("+", my_list[-1])

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-18
        • 1970-01-01
        • 2016-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-22
        • 1970-01-01
        相关资源
        最近更新 更多