所以我最近遇到了一个问题,我正在尝试编写一个简单的函数来检查包是否可用,如果没有则下载它。
但是出于某种原因,当我通过函数传递一个字符串而不能识别它时(参见下面的简单示例)......
这有效......
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?
答案 0 :(得分:6)
这是require
evaluates its arguments方式的结果。您可以通过传递character.only
参数来解决这个问题:
p.f <- function(x) (require(x, character.only = TRUE))