首页 > 解决方案 > 如何在不使用 for 循环的情况下处理两个列表的多个元素?

问题描述

这是一个简单的例子。如何在不使用 for 循环的情况下以 i=1:4 执行 -a[[ith element]]*b[[ith element]]?非常感谢!

a = list(
  c(1, 2),
  c(2, 7),
  c(5, 3),
  c(1, 4))
  
b = list(
matrix(1:4, 2, 2),
matrix(7:10, 2, 2),
matrix(2:5, 2, 2),
matrix(40:43, 2, 2))

操作:

-a[[1]]*b[[1]]
-a[[2]]*b[[2]]
-a[[3]]*b[[3]]
-a[[4]]*b[[4]]

最终输出尺寸:4 x 2 x2

标签: rlistfor-loop

解决方案


我们可以用来Map在对应的列表元素之间进行元素操作

Map(`*`, a, b)

-输出

[[1]]
     [,1] [,2]
[1,]    1    3
[2,]    4    8

[[2]]
     [,1] [,2]
[1,]   14   18
[2,]   56   70

[[3]]
     [,1] [,2]
[1,]   10   20
[2,]    9   15

[[4]]
     [,1] [,2]
[1,]   40   42
[2,]  164  172

推荐阅读