【问题标题】:Can't pass a character string to require() in a function? [duplicate]不能在函数中将字符串传递给 require()? [复制]
【发布时间】:2014-06-20 13:50:05
【问题描述】:

所以我最近遇到了一个问题,我正在尝试编写一个简单的函数来检查一个包是否可用,如果没有就下载它。

但是由于某种原因,当我通过函数将字符串传递给 require 时,它​​无法识别它(参见下面的简单示例)...

这行得通...

    p.f <- function(x) print(x)
    p.f("Hello")
   [1] "Hello"

这样……

    (require("base"))
    [1] TRUE

但这不...?

    p.f <- function(x) (require(x))
    p.f("base")
    Loading required package: x
    [1] FALSE
    Warning message:
    In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
    there is no package called ‘x’

为什么不能识别字符串而不是x?

【问题讨论】:

    标签: r


    【解决方案1】:

    这是requireevaluates its arguments 方式的结果。您可以通过传递 character.only 参数来解决此问题:

    p.f <- function(x) (require(x, character.only = TRUE))
    

    【讨论】:

    • 非常好,工作完美,认为警告消息中已经设置了,谢谢!
    • @VierodA require 内部调用 library,并在 that 调用中设置参数,否则它会遇到您遇到的相同错误。 ;-)
    猜你喜欢
    • 2018-08-31
    • 1970-01-01
    • 2013-11-18
    • 2018-09-02
    • 1970-01-01
    • 2023-03-16
    • 2016-01-28
    • 2013-12-11
    相关资源
    最近更新 更多