如何在列表中获取函数的各个元素并将它们放入 R 中的矩阵中?

how do I get individual elements of functions in a list and put them in a matrix in R?

编辑:包含示例结果

我创建了这样的函数:

Ex1 = function(a,b,c) 1 * a + 2 * b + 3 * c + 4
Ex2 = function(a,b,c)
Ex3 = function(a,b,c)
etc..

并将它们放入列表中:

exList = list(Ex1,Ex2,Ex3,etc.)

现在我必须使用函数来获取各个元素([a,b,c] 和数字(分别))

我在大多数情况下都遇到了麻烦,尝试过 substring 和 split 都无济于事(或者我只是没有正确使用它),因为我确实知道如何创建矩阵。

结果示例为:

   a  b  c RHS
1  1  2  3  4
2  5  6  7  8
3  9 10 11  12

但长话短说,我需要创建一个增广系数矩阵

任何帮助都会很棒。谢谢!

您可以像这样提取数字:

Ex1 <- function(a,b,c) 1 * a + 2 * b + 3 * c + 4


foo <- function(x) {
  if(length(x) > 1) {
    res <- lapply(x, foo)
  } else {
      res <- if(is.numeric(x)) x else NA
  }
  na.omit(unlist(res))
}

foo(body(Ex1))
#[1] 1 2 3 4

但是,我强烈建议您改变整个方法。可能是这样的:

coefs <- list(c1 = c(1, 2, 3, 4), c2 = c(5, 6, 7, 8))
callerFun <- function(a, b, c, coefs) c(cbind(a, b, c, 1) %*% coefs)

#example use
a <- 1:2
b <- 3:4
c <- 5:6

lapply(coefs, callerFun, a = a, b = b, c = c)
#$c1
#[1] 26 32
#
#$c2
#[1] 66 84