【问题标题】:How to call a function using the package and function name in a string with ::如何使用带:: 的字符串中的包和函数名调用函数
【发布时间】:2018-07-21 05:07:58
【问题描述】:

如何使用完全限定名称(“package::function”)调用包中的函数?

这不起作用:

> eval(call("utils::sessionInfo"))
Error in `utils::sessionInfo`() : 
  could not find function "utils::sessionInfo"

这行得通:

eval(call("sessionInfo"))

必须可以在没有内部知识的情况下解析和执行代码 sn-p,但是如何?

【问题讨论】:

    标签: r


    【解决方案1】:

    call 替换为parse

    eval(parse(text = 'utils::sessionInfo()'))
    

    例如:

    eval(parse(text = 'dplyr::count(iris, Species)'))
    
    # A tibble: 3 x 2
      Species        n
      <fctr>     <int>
    1 setosa        50
    2 versicolor    50
    3 virginica     50
    

    【讨论】:

    • works :-) 知道为什么call 不尊重命名空间吗?这是违反直觉的......
    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 2010-12-19
    • 2017-09-29
    • 2014-04-11
    • 2014-07-29
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    相关资源
    最近更新 更多