我有以下问题。我有一个列表,其中包含这些矢量列表列表。 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循环,但我知道它需要太多时间而且我想要要知道是否有,我可以使用应用函数或类似的东西。
答案 0 :(得分:2)
如果L
是您的列表,请尝试:
lapply(L, do.call, what = "*")
答案 1 :(得分:1)
apply函数与for循环非常相似。使用lapply函数:
newlist <- lapply(Mylist, function(x) x[[1]] * x[[2]])
答案 2 :(得分:0)
您还可以使用lapply
和Reduce
:
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))