将存储在列表的列表中的向量相乘
multiply vectors stored in a list of a list
我有以下问题。我有一个列表,其中包含像这样的矢量列表列表。我的列表:
[[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 函数与 for 循环非常相似。使用 lapply 函数:
newlist <- lapply(Mylist, function(x) x[[1]] * x[[2]])
如果 L
是您的列表,请尝试:
lapply(L, do.call, what = "*")
您也可以使用 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))
我有以下问题。我有一个列表,其中包含像这样的矢量列表列表。我的列表:
[[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 函数与 for 循环非常相似。使用 lapply 函数:
newlist <- lapply(Mylist, function(x) x[[1]] * x[[2]])
如果 L
是您的列表,请尝试:
lapply(L, do.call, what = "*")
您也可以使用 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))