1

我如何编写一个函数,它接受一个字符串向量并返回一个函数,其参数具有字符串向量的名称?此外,我想使用我的参数字符串来使用该函数内的输入列创建list或命名。data.frame我想要的应用程序是能够将其传递给predict估计一些点的方法。如果这个功能已经存在,请告诉我。否则,我很好奇我会怎么写。下面我包含了 R 伪代码,说明了我正在尝试做的事情,并希望能展示我在概念上卡住的地方。

make_fitting_function <- function(mod) {
   x <- xterms(mod)
   function(!! x) {
     predict(mod, newdata = list(!! x))
   }
}

调用此函数会返回一个可以在单独的向量参数上调用的函数。例如:

f <- make_fitting_function(lm(mpg ~ wt, data = mtcars))
f(wt = c(1, 2, 3, 4, 5))

结果将是:

    1     2     3     4     5 
31.94 26.60 21.25 15.91 10.56 

但是,这也适用于更多 x 变量(例如):

f <- make_fitting_function(lm(mpg ~ wt + am + carb, data = mtcars))
f(wt = c(1, 2, 3, 4, 5), am = rep(1, 5), carb = seq(2, 10, by = 2))

理想情况下,该函数应该能够在单个变量的情况下通过积分来使用。

4

1 回答 1

2

您实际上不需要命名参数;相反,只需将数据框传入以使用所有数据框进行预测。

make_fitting_function <- function(model) {
    function(...) {
        predict(model, newdata=data.frame(...))
    }
}
f <- make_fitting_function(lm(mpg ~ wt + am + carb, data = mtcars))
f(wt = c(1, 2, 3, 4, 5), am = rep(1, 5), carb = seq(2, 10, by = 2))
##         1         2         3         4         5 
## 30.589985 24.637415 18.684846 12.732277  6.779708 
于 2017-05-11T14:22:11.037 回答