将字符串传递给R函数参数,但稍后将其用作另一个函数的参数名称

时间:2015-02-01 23:38:17

标签: r dplyr

在我的数据分析中,有许多变量我希望最终用户在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 个答案:

答案 0 :(得分:3)

您必须使用非标准评估调用的替代方法。这是你可能会这样做的方式

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")