【问题标题】:I am using the ... in R for control variables in a function I am making, how do I convert the control variables to a list?我正在使用 R 中的 ... 作为我正在制作的函数中的控制变量,如何将控制变量转换为列表?
【发布时间】:2020-12-23 23:14:12
【问题描述】:

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

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

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

【问题讨论】:

  • 只是澄清一下,x,y,...的元素应该是字符串?

标签: r list function gwr


【解决方案1】:

一般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 &lt;- do.call("c", ...))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 2019-06-17
    相关资源
    最近更新 更多