我想将矩阵列表(一行)相乘,如下所示:

lst <- list("111.2012"=matrix(c(1, 0, 6, NA, 1, 0),
                            nrow = 1, byrow = T),
          "112.2012"=matrix(c(6, 2, 2, 0, 3, NA),
                            nrow = 1, byrow = T))

具有这样的 vector (与每个矩阵的长度相同):
vec <- c(1,2,3,1,2,3)

并期待这个结果:
$`111.2012`
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    0   18   NA    2    0

$`112.2012`
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    6    4    6    0    6   NA

到目前为止,我已经尝试过:
mapply("*", lst, vec)
Map("*", lst, vec)

这给了我三倍的数字和错误的数字。我还考虑过在mapply中使用lapply来处理列表,但不知道该怎么做。有什么建议么?谢谢

最佳答案

我相信您正在寻找lapply(),因为您使用的是列表lapply( lst, FUN= function(x) x*vec)
有关更多信息,请参见this

希望有帮助!

lapply(lst,FUN= function(x) x*vec) ## My old clunky way

lapply(lst, "*" , vec) ## As informed by Richard Scriven (Thanks!)

$`111.2012`
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    0   18   NA    2    0

$`112.2012`
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    6    4    6    0    6   NA

关于r - R:如何将列表元素乘以向量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34820827/

10-11 22:30
查看更多