代码之家  ›  专栏  ›  技术社区  ›  NelsonGon phoxis

使用正则表达式[duplicate]从包中提取函数

r
  •  1
  • NelsonGon phoxis  · 技术社区  · 5 年前

    这不一定是正则表达式 本质上

    test<-"Aes"
    test<-tolower(test)
    ggplot2::test
    

    此操作失败,因为无法将“测试”识别为从ggplot2导出的函数。

    错误:“测试”不是从“命名空间:ggplot2”导出的对象

    什么是一个解决办法,使这项工作?

    谢谢

    1 回复  |  直到 5 年前
        1
  •  2
  •   patL grad student    5 年前

    您可以使用 eval parse :

    eval(parse(text = paste0("ggplot2::", test)))
    
    #function (x, y, ...) 
    #{
    #    exprs <- rlang::enquos(x = x, y = y, ...)
    #    is_missing <- vapply(exprs, rlang::quo_is_missing, logical(1))
    #    aes <- new_aes(exprs[!is_missing], env = parent.frame())
    #    rename_aes(aes)
    #}
    #<bytecode: 0x000001458db09718>
    #<environment: namespace:ggplot2
    

    你可以用 match.func 如果你已经加载了 ggplot2

    match.fun(test)
    
    #function (x, y, ...) 
    #{
    #    exprs <- rlang::enquos(x = x, y = y, ...)
    #    is_missing <- vapply(exprs, rlang::quo_is_missing, logical(1))
    #    aes <- new_aes(exprs[!is_missing], env = parent.frame())
    #    rename_aes(aes)
    #}
    #<bytecode: 0x000001458db09718>
    #<environment: namespace:ggplot2>