在函数中无法将字符串传递给require()?

时间:2014-06-20 13:50:06

标签: r

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

但是出于某种原因,当我通过函数传递一个字符串而不能识别它时(参见下面的简单示例)......

这有效......

    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?

1 个答案:

答案 0 :(得分:6)

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

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