使用mapply时参数不一致

时间:2019-01-03 10:50:54

标签: r matrix matrix-multiplication

我有一个看起来像这样的函数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

我不明白为什么会这样。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

只需将xm用作list()

mapply(func, b3, list(xm))
[1] 390.5600  23.2569

数据:

xm <- matrix(1:4, ncol=2,nrow=2)
b1 <- matrix(data = c(0.8, 3.6), nrow = 2, ncol = 1)
b2 <- matrix(data = c(1.56, 0.27), nrow = 2, ncol = 1)
b3 <- list(b1,b2)

func<- function(beta,X){
  res <-  t(beta) %*% t(X) %*% X %*% beta
  return(res)
}