从string中加载R包
我想创build一个函数,其中包括加载我在函数中做的一个包。 一个简短的例子(不运行!):
loadMe <- function(name){ genLib(xxx, libName = name) #make a new library with name "name" library(name) #load the new library... }
这不行! 一些可重现的代码说明了我的主要问题:
library(ggplot) #this works fine load.this <- "ggplot" library(load.this) #I want this to load ggplot!
我知道问题在于library()
和require()
将一个不存在的对象名作为参数。 我已经尝试用parse()
, deparse()
, substitute()
, expression()
, quote()
等等来包装我的string。这些都返回相同的问题:
library(load.this) # Error in library(loadss) : there is no package called 'loadss' library(deparse(load.this)) # Error in library(deparse(loadss)) : 'package' must be of length 1
有没有办法做到这一点?
使用character.only
参数
foo <- "ggplot2" library(foo,character.only=TRUE)
你说你已经尝试使用parse()
。 以下似乎为我工作:
eval(parse(text = 'library(MASS)')[1])