我想创建一个函数,其中包括加载函数内的一个包。一个简短的例子(不运行!):从字符串中加载R包
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()
,等等等等,这些都返回了同样的问题:
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
有没有办法做到这一点?
如果您看看库('?library')的帮助,那么您得到了(在参数部分中):''package'作为名称给出的包的名称或文字字符串或字符串,具体取决于“character.only”是否为“FALSE”(默认)或“TRUE”。 – Marek 2011-06-09 10:54:39