我想将矩阵列表(一行)相乘,如下所示:
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/