假设您有一个简单的函数,它指定要为每个变量运行哪些统计检验。为了这个问题的目的,简化了其语法,如下所示:
test <- function(...) {
x <- list(...)
return(x)
}
它接受参数对(例如)Gender = 'Tukey'
,并打算将其结果传递给其他函数。的输出test()
如下:
test(Gender = 'Tukey')
# $Gender
# [1] "Tukey"
所希望的是Gender
用动态分配的变量替换文字的能力varname
(例如,出于循环目的)。当前发生的是:
varname <- 'Gender'
test(varname = 'Tukey')
# $varname
# [1] "Tukey"
但是需要的是:
varname <- 'Gender'
test(varname = 'Tukey')
# $Gender
# [1] "Tukey"
我尝试修改诸如eval()
和的功能parse()
,但无济于事。实际上,我只是通过重命名结果列表来解决了该问题,但这是一个丑陋的解决方案,并且我相信有一种优雅的R方式可以实现此目的。在此先感谢您的回答具有教育意义。
注意:这个问题是我在尝试编写自定义函数的过程中遇到的mcp()
,该函数在effects
包的内部使用。所述mcp()
功能是的真实世界对应物test()
。
编辑1:也许需要澄清(出于教育目的)更改test()
不是一种选择。问题是关于如何将棘手的参数传递给test()
。如果您看一下NB,就会很清楚为什么:的真实世界对应物test()
,即mcp()
带有包装。尽管可以创建它的修改后的副本,但我真的很好奇是否存在一种简单的解决方案,可以在点参数的上下文中以某种方式将动态分配的变量“转换”为文字。
那这个呢:
varname <- "Gender"
args <- list()
args[[varname]] <- "Tukey"
do.call(test, args)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句