gpt4 book ai didi

r - R:将列表元素从函数输入转换为表达式

转载 作者:行者123 更新时间:2023-12-04 18:35:28 24 4
gpt4 key购买 nike

我正在编写一个函数,其中的输入是另一个函数的参数和名称。我想将这些参数和函数名称转换为未求值的表达式或调用。例如,如果这是对函数的调用:

huh_fun(
data = mtcars
method = lm,
formula = hp ~ mpg,
method.args = list(weights = drat, subset = rep(TRUE, 32)) # list of additional arguments
)


我希望该函数返回未计算的以下表达式/调用:

lm(hp ~ mpg, data = mtcars, weights = drat, subset = rep(TRUE, 32))


我已经成功引用了 data=method=formula=参数并将它们组合成一个调用。但是无法弄清楚如何引用 method.args=参数,以及如何将列表元素添加到函数参数中。任何和所有的指针表示赞赏。谢谢〜

最佳答案

在“ huh_fun”中具有固定的参数名称后,我们可以使用“ language”对象构造未评估的调用:

huh_fun = function(data, method, formula, method.args)
{
ans = c(list(substitute(method),
substitute(formula),
data = substitute(data)),
as.list(substitute(method.args))[-1])
as.call(ans)
}

huh_fun(
data = mtcars,
method = lm,
formula = hp ~ mpg,
method.args = list(weights = drat, subset = rep(TRUE, 32)))
#lm(hp ~ mpg, data = mtcars, weights = drat, subset = rep(TRUE,
# 32))

关于r - R:将列表元素从函数输入转换为表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59433187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com