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

时间:2019-02-08 08:09:16

标签: r

这不一定是正则表达式本身,但是我如何从包中提取以下格式的函数?

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

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

  

错误:'test'不是从'namespace:ggplot2'导出的对象

有什么解决方法可以解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用evalparse将其解析为文本:

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>