0

我有这个函数可以进行地理加权回归,我有我的形状文件,x用于 x 变量和yy 变量,...用于控制变量。例如,我想先调用回归但有多个控制变量 - 我该怎么做?

GWR.function <- function(shape1, x, y, ...) {
    model <- lm(shape1[[x]] ~ shape1[[y]] + shape1[[...]])
    return(summary(model))
}

我认为它需要使用列表,但我不确定如何执行此操作。

4

1 回答 1

2

通常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", ...)

于 2020-12-23T23:34:36.560 回答