从字符串加载R包

时间:2011-06-09 09:19:24

标签: string r character

我想创建一个函数,包括加载我在函数中创建的包。一个简短的例子(不运行!):

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

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:41)

使用character.only参数

foo <- "ggplot2"
library(foo,character.only=TRUE)

答案 1 :(得分:0)

您说您已尝试使用parse()。以下似乎对我有用:

eval(parse(text = 'library(MASS)')[1])