乘以存储在列表

时间:2017-02-28 17:44:57

标签: r list apply multiplying

我有以下问题。我有一个列表,其中包含这些矢量列表列表。 MYLIST:

[[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循环,但我知道它需要太多时间而且我想要要知道是否有,我可以使用应用函数或类似的东西。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

您还可以使用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))