如何按元素将函数应用于矩阵列表

B-l*_*leR 1 r list matrix lapply

我有一个矩阵列表,我想将每个矩阵与与列表长度相同的向量中的不同因子相乘。我尝试了以下方法:

lapply(list(mat1, mat2, mat3),"*",c(1,2,3))
Run Code Online (Sandbox Code Playgroud)

但是,这会返回:

list(mat1*c(1,2,3), mat2*c(1,2,3), mat3*c(1,2,3))
Run Code Online (Sandbox Code Playgroud)

而不是我需要的:

list(mat1*1,mat2*2,mat3*3)
Run Code Online (Sandbox Code Playgroud)

有人解决这个问题吗?

Dat*_*neR 5

正如 docendo discimus 建议的那样,您可以使用mapply

 l <- list(matrix(1:4, ncol = 2), matrix(5:8, ncol = 2), matrix(9:12, ncol = 2))
 v <- 1:3
 mapply(function(x,y) x*y, x = l, y = v, SIMPLIFY = FALSE)
Run Code Online (Sandbox Code Playgroud)

或者只是使用Map

Map("*", l, v)
Run Code Online (Sandbox Code Playgroud)