如何在函数调用中使用列表对象而不是参数序列?

时间:2011-12-21 21:08:27

标签: r

例如,如果我有lm个对象的列表,我该如何将其传递给函数anova

我尝试在R中搜索对可变参数函数的任何引用,或者对LISP的apply执行任何类似的函数,但没有成功。

编辑:我明白了,根据this answer.

,这可以通过do.call来完成

1 个答案:

答案 0 :(得分:1)

lapply功能是你的朋友。这是一个完整但荒谬的例子:

R> set.seed(42)                      # be reproducible
R> X <- matrix(rnorm(100), ncol=2)
R> y <- vector(mode="list", length=3)
R> y[[1]] <- runif(50); y[[2]] <- rt(50, 3); y[[3]] <- rbinom(50, 5, 0.5)

此时,我们列出了候选因变量和一组共同的回归量。因此,让我们使用lapply()一次运行多个回归,然后再次运行 比如说,提取系数。

R> fits <- lapply(y, FUN=function(z) { lm(z ~ X) })
R> coefs <- lapply(fits, coef)
R> coefs
[[1]]
(Intercept)          X1          X2 
  0.4543939   0.0503187   0.0442636 

[[2]]
(Intercept)          X1          X2 
  0.1115462  -0.0720639   0.1398801 

[[3]]
(Intercept)          X1          X2 
  2.3338105   0.0991485   0.0965852 

R>