2012-03-09 9 views
13

me gustaría lograr algo en el sentido deCalling biblioteca() en R con una variable como el argumento

libs = c("AER", "gbm", "caret", "MASS", "nnet", "randomForest") 
for (i in libs) { 
    if(!is.element(i, .packages()) { 
    install.packages(i) 
    } 
    library(i) 
} 

La llamada a la biblioteca (i) no sustituye i con el valor que se almacena en la variable i. En cambio, intenta cargar la biblioteca llamada "i"

¿Hay alguna manera de forzar que i se trate como una variable y se resuelva antes de la llamada a la biblioteca?

+0

joran's answear es correcto. Sin embargo, una pequeña mejora sería usar ".packages (all.available = TRUE)". De esta forma, no buscará solo en las librerías cargadas. – Stanislav

Respuesta

21

¿Qué tal library(...,character.only = TRUE)?

+1

gracias! Una vez más, la documentación de R me falla ... –

+1

¿Qué significa este 'character.only = TRUE'? No puedo encontrar ninguna documentación sobre eso. – Nick

3

Aquí está el código completo (combina la respuesta de joran y agrega "all.available = TRUE").

libs = c("AER", "gbm", "caret", "MASS", "nnet", "randomForest") 
for (i in libs){ 
    if(!is.element(i, .packages(all.available = TRUE))) { 
    install.packages(i) 
    } 
    library(i,character.only = TRUE) 
} 
Cuestiones relacionadas