gpt4 book ai didi

r - 如何将glm包装在一个函数中? (将 dotdotdot 直接传递给另一个函数失败)

转载 作者:行者123 更新时间:2023-12-01 12:45:17 26 4
gpt4 key购买 nike

我想在我的函数中调用 glm,一个最小的例子是:

my.glm <- function(...){
fit <- glm(...)
summary(fit)
}

但是,它给出了一个错误。

a <- data.frame(x=rpois(100, 2), y=rnorm(100) )

glm(x ~ 1, offset=y, family=poisson, data=a)
my.glm(x ~ 1, offset=y, family=poisson, data=a) # error eval(expr, envir, enclos)

我能做什么?

最佳答案

您可以使用 match.call 来扩展 ...,并修改其输出以使其成为对 glm 的调用:

my.glm <- function(...){
cl <- match.call()
cl[1] <- call("glm")
fit <- eval(cl)
summary(fit)
}


my.glm(x ~ 1, offset=y, family=poisson, data=a)

Call:
glm(formula = x ~ 1, family = poisson, data = a, offset = y)

Deviance Residuals:
Min 1Q Median 3Q Max
-7.1789 -0.8575 0.3065 1.5343 4.4896

Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.07628 0.07433 1.026 0.305

(Dispersion parameter for poisson family taken to be 1)

Null deviance: 346 on 99 degrees of freedom
Residual deviance: 346 on 99 degrees of freedom
AIC: 559.46

Number of Fisher Scoring iterations: 6

关于r - 如何将glm包装在一个函数中? (将 dotdotdot 直接传递给另一个函数失败),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20680399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com