我有这个函数可以进行地理加权回归,我有我的形状文件,x
用于 x 变量和y
y 变量,...
用于控制变量。例如,我想先调用回归但有多个控制变量 - 我该怎么做?
GWR.function <- function(shape1, x, y, ...) {
model <- lm(shape1[[x]] ~ shape1[[y]] + shape1[[...]])
return(summary(model))
}
我认为它需要使用列表,但我不确定如何执行此操作。
通常do.call()
是如何将列表作为函数的参数引入。在这里,我结合y
并将...
结果character
向量传递给reformulate
. 如果您想使用 的单个元素...
,list(...)
将其转换为“常规”列表。
## set up example
dd <- data.frame(x=1:10,y=rnorm(10), z=rnorm(10))
GWR.function <- function(shape1, x, y, ...) {
predvars <- do.call("c",c(list(y),...))
form <- reformulate(predvars, response=x)
model <- lm(form, data=shape1)
return(summary(model))
}
GWR.function(dd, "x","y","z")
您可以重新定义您的函数function(shape1, x, ...)
以稍微简化代码(然后predvars <- do.call("c", ...)
)