Несоответствующие аргументы при использовании mapply - PullRequest
0 голосов
/ 03 января 2019

У меня есть функция 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

Однако, когда я добавляю эти две матрицы в список и пытаюсь вызвать func с помощью mapply, я получаю ошибку несовместимых аргументов.

b3 <- list(b1,b2)
mapply(func, c, X=xm)
#Error in t(beta) %*% t(X) : non-conformable arguments

Я не могу понять, почему это происходит.Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 03 января 2019

Просто передать 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)
}
...