Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:如何将列表元素乘以向量?_R_List - Fatal编程技术网

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

R:如何将列表元素乘以向量?,r,list,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)) 到目前为止,我试过: mapply("*", l

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

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))
到目前为止,我试过:

mapply("*", lst, vec) 
Map("*", lst, vec)

这给了我三倍多的数字和错误的数字。我还想过在mapply中使用lappy来处理列表,但不知道如何做。有什么建议吗?谢谢

我相信您正在寻找
lappy()
,因为您使用的是列表
lappy(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

Map/mappy
将函数应用于输入变量的相应元素。对于长度为2的
列表
,我们有两个元素,即
lst[[1]]
lst[[2]]
,对于长度为6的
向量
,它将是6。因此,这造成了不平等。为了纠正这一点,我们将向量放置在
列表中(通过使用
列表
包装),以便它循环到“lst”的长度,并将作为一个整体用于“lst”中的每个元素

Map("*", lst, list(vec))
#$`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
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
Map("*", lst, list(vec))
#$`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