这不一定是正则表达式本身,但是我如何从包中提取以下格式的函数?
test<-"Aes"
test<-tolower(test)
ggplot2::test
此操作失败,因为无法将“ test”识别为ggplot2的导出函数。
错误:'test'不是从'namespace:ggplot2'导出的对象
有什么解决方法可以解决这个问题?
谢谢!
答案 0 :(得分:2)
您可以使用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>