【发布时间】:2019-05-29 22:59:13
【问题描述】:
我有一个如下所示的函数 func:
func<- function(beta,X){
res <- t(beta) %*% t(X) %*% X %*% beta
return(res)
}
其中 X = 设计矩阵,我有两个矩阵
b1 <- matrix(data = c(0.8, 3.6), nrow = 2, ncol = 1)
b2 <- matrix(data = c(1.56, 0.27), nrow = 2, ncol = 1)
当我在每个矩阵上调用该函数时,它工作正常,并产生一个结果。
func(b2,xm)
[,1]
[1,] 213.6931
func(b1,xm)
[,1]
[1,] 23138.99
但是,当我将这两个矩阵添加到列表中并尝试使用 mapply 调用 func 时,我得到一个不符合要求的参数错误。
b3 <- list(b1,b2)
mapply(func, c, X=xm)
#Error in t(beta) %*% t(X) : non-conformable arguments
我不明白为什么会这样。任何帮助将不胜感激。
【问题讨论】:
-
您的代码中的
xm是什么? -
@phiver 是设计矩阵 X。它是一个有 2 列 n 行的矩阵。
-
你可能也需要通过它,
mapply(func, b3, list(xm)) -
@RLave 啊。这是一个错字。我会编辑问题,忘了把它放在 mapply 中
-
这里用
sapply就够了,像这样sapply(b3, func, xm)。
标签: r matrix matrix-multiplication