R:如何用向量乘以列表元素?

N.V*_*ela 2 r list

我想要乘以一个矩阵列表(有一行),如下所示:

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))
Run Code Online (Sandbox Code Playgroud)

使用这样的矢量(与每个矩阵的长度相同):

vec <- c(1,2,3,1,2,3)
Run Code Online (Sandbox Code Playgroud)

并期待这个结果:

$`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
Run Code Online (Sandbox Code Playgroud)

我到目前为止尝试了这个:

mapply("*", lst, vec) 
Map("*", lst, vec)
Run Code Online (Sandbox Code Playgroud)

这给了我三倍的数字和错误的数字.我还想过在mapply中使用lapply来添加列表,但是不知道怎么做.有什么建议?谢谢

Bad*_*ger 6

我相信你正在寻找lapply(),因为你正在使用一个列表lapply( lst, FUN= function(x) x*vec)

欲了解更多信息,请参阅.

希望有所帮助!

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
Run Code Online (Sandbox Code Playgroud)