我想要乘以一个矩阵列表(有一行),如下所示:
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来添加列表,但是不知道怎么做.有什么建议?谢谢
我相信你正在寻找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)
| 归档时间: |
|
| 查看次数: |
4385 次 |
| 最近记录: |