如何按元素将函数应用于矩阵列表
How to apply a function to a list of matrices elementwise
我有一个矩阵列表,我想将每个矩阵乘以一个与列表长度相同的向量的不同因子。
我尝试了以下方法:
lapply(list(mat1, mat2, mat3),"*",c(1,2,3))
然而,这个returns:
list(mat1*c(1,2,3), mat2*c(1,2,3), mat3*c(1,2,3))
而不是我需要的:
list(mat1*1,mat2*2,mat3*3)
有人解决这个问题吗?
正如 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)
或者直接使用Map
Map("*", l, v)
我有一个矩阵列表,我想将每个矩阵乘以一个与列表长度相同的向量的不同因子。 我尝试了以下方法:
lapply(list(mat1, mat2, mat3),"*",c(1,2,3))
然而,这个returns:
list(mat1*c(1,2,3), mat2*c(1,2,3), mat3*c(1,2,3))
而不是我需要的:
list(mat1*1,mat2*2,mat3*3)
有人解决这个问题吗?
正如 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)
或者直接使用Map
Map("*", l, v)