Я хочу создать функцию, которая включает в себя загрузку пакета, который я создаю внутри функции. Краткий пример (который не запускается!):
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
Есть ли способ сделать это?