【问题标题】:multiply vectors stored in a list of a list将存储在列表中的向量相乘
【发布时间】:2017-02-28 17:44:57
【问题描述】:

我有以下问题。我有一个列表,其中包含这些向量列表的列表。我的名单:

[[1]]
[[1]][[1]]
[1]  1  2  3  4  5  6  7  8  9 10

[[1]][[2]]
[1]  6  7  8  9 10 11 12 13 14 15


[[2]]
[[2]][[1]]
[1] 11 12 13 14 15 16 17 18 19 20

[[2]][[2]]
[1] 16 17 18 19 20 21 22 23 24 25

[[3]]
[[3]][[1]]
[1]  3  4  5  6  7  8  9 10 11 12

[[3]][[2]]
[1]  6  7  8  9 10 11 12 13 14 15

....

列表中的每个子列表仅包含两个元素(向量),我想找到一个解决方案来将存储在列表的每个子列表中的两个向量相乘。换句话说,Mylist[[1]][[1]]*Mylist[[1]][[2]],Mylist[[2]][[1]]*Mylist[[2]][[2]] , Mylist[[3]][[1]]*Mylist[[3]][[2]] 等等...我可以轻松地做一个 for 循环,但我知道这需要太多时间,我想要知道是否有离开,我可以使用 apply 函数或类似的东西。

【问题讨论】:

  • 所有答案都很完美!!确实很简单!非常感谢大家的帮助!!

标签: r list apply multiplication


【解决方案1】:

如果L 是您的列表,请尝试:

lapply(L, do.call, what = "*")

【讨论】:

    【解决方案2】:

    apply 函数与 for 循环非常相似。使用 lapply 函数:

    newlist <- lapply(Mylist, function(x) x[[1]] * x[[2]])
    

    【讨论】:

      【解决方案3】:

      您也可以使用lapplyReduce

      lapply(myList, Reduce, f="*")
      [[1]]
       [1]   6  14  24  36  50  66  84 104 126 150
      
      [[2]]
       [1] 176 204 234 266 300 336 374 414 456 500
      

      数据,OP 示例中的前两个列表元素

      myList <- list(list(1:10, 6:15), list(11:20, 16:25))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-23
        • 1970-01-01
        • 2016-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多