【问题标题】:pass a string to an R function argument but later use as another function's argument name将字符串传递给 R 函数参数,但稍后用作另一个函数的参数名称
【发布时间】: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 进行将来的子集(如上所述) ?非常感谢你!

【问题讨论】:

    标签: r dplyr


    【解决方案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")

    【讨论】:

      猜你喜欢
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多