【发布时间】:2017-05-11 13:57:31
【问题描述】:
如何编写一个函数,它接受一个字符串向量并返回一个函数,其参数具有字符串向量的名称?此外,我想使用我的参数字符串来创建一个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))
理想情况下,这个函数应该可以在单个变量的情况下被积分使用。
【问题讨论】:
-
那么你将如何调用这个函数以及期望的输出是什么?更具体的reproducible example 会有所帮助。您是否还专门为此寻找与 dplyr 0.6 一起使用的功能?因为该符号根本不是基础 R 的一部分。
-
是的,我做了符号(记住 dplyr 0.6 语法),因为我不确定如何使用所需的参数构建函数。我正在寻找不在矩阵上调用此函数,而是在每个参数的单独向量上调用此函数(组合成矩阵以进行预测)。不过,我会从 dplyr 管道内部调用它。
-
好吧,因为这些运算符还不是完全标准的,所以最好更明确地说明你的意思。只举一个调用函数并给出结果的例子(你可以省略实现)。
标签: r functional-programming nse