【发布时间】:2021-09-21 08:08:54
【问题描述】:
我有两个列表,每个列表都有很多矩阵。为简洁起见,下面是一个每个列表有两个矩阵的示例:
l1 <- list(matrix(1:20, nrow=2),
matrix(21:40, nrow=2))
l2 <- list(matrix(41:60, nrow=2),
matrix(61:80, nrow=2))
我正在尝试使用 lapply (a) 删除每个矩阵的第一列,然后 (b) 将 l1 中的每个矩阵与 l2 中的相应矩阵相乘。
首先,我试过了:
result <- lapply(l1, function(x,y){
tmp <- x[,-1]*y[,-1]
return(tmp)
}, y=l2)
没有用。问题是我无法以这种方式从l2 中删除第一列。如果l2 是一个向量而不是一个列表,那么代码将适用于tmp <- x[,-1]*y[-1]。但即使我尝试简单地将每个列表中的矩阵相乘,它仍然不起作用:
result <- lapply(l1, function(x,y){
tmp <- x*y
return(tmp)
}, y=l2)
有什么想法吗?
【问题讨论】:
标签: r list matrix lapply matrix-multiplication