将字符串传递给 R 函数参数,但稍后用作另一个函数的参数名称
Posted
技术标签:
【中文标题】将字符串传递给 R 函数参数,但稍后用作另一个函数的参数名称【英文标题】:pass a string to an R function argument but later use as another function's argument name 【发布时间】:2015-02-01 23:38:16 【问题描述】:在我的数据分析中,我希望最终用户将许多变量指定为 R 函数中的参数值:
myFun = function(var.name = "age") ...
在这个myFun
函数中,我还想使用var.name
作为dplyr
中数据框dat1
的子集参数:
dat1.level1 = filter(dat1, var.name == ">18")
dat1.level2 = filter(dat1, var.name == "<=18")
我不知道用户何时将字符串传递给var.name
,例如“age”,这也是数据框的列名,我以后如何使用这个var.name
进行将来的子集(如上所述) ?非常感谢你!
【问题讨论】:
【参考方案1】:您必须使用非标准评估调用的替代方法。以下是你可以做到的方法
library(dplyr)
library(lazyeval)
myFun <- function(var.name = "cyl")
print(var.name)
mtcars %>% filter_(.dots=interp(~x==4, x=as.name(var.name)))
myFun()
myFun("carb")
有关详细信息,请参阅 dplyr 中包含的有关此主题的小插图:vignette("nse")
【讨论】:
以上是关于将字符串传递给 R 函数参数,但稍后用作另一个函数的参数名称的主要内容,如果未能解决你的问题,请参考以下文章
在 R 中,如何将参数作为字符串传递给像 plotXtabs2 这样的函数?