2010-08-04 33 views
5

Quiero crear una función que toma un nombre de conjunto de datos y un nombre de paquete y devuelve el conjunto de datos como hoja.de.datos. Aquí está mi intentoUna función que devuelve un conjunto de datos

loadDataSet <- function(name, pkg) { 
     varname <- data(name, package=pkg) 
     return(get(varname[[1]])) 
    } 
loadDataSet("acme", "boot") 

Sin embargo, esta función falla. El problema parece ser que la llamada a datos() no busca el valor de la variable de nombre, sino más bien "nombre".

Ya sé cómo pasar de una variable a su nombre, a través de deparse (sustituto (var)). Pero, ¿cómo hago para el otro lado, desde "var" a var?

Cualquier indicio apreciado!

Respuesta

5

seguirlo

loadDataSet <- function(name, pkg) { 
     do.call("data", list(name,package=pkg)) 
     return(get(name)) 
    } 

loadDataSet("acme", "boot") 
+0

Si no desea que el conjunto de datos impreso a la consola, use 'invisible' en lugar de' return'. –

+0

Bueno, eso seguro ayudó. ¡Gracias! Ahora tengo un problema similar con la tabla(). Digamos que adjunté cgd de supervivencia y quiero ahora mesa (sexo, tratar), pero de nuevo solo tengo "sexo" y "trato". ¿Cómo puedo hacer eso? do.call ("table", list ("sex", "treat")) failed ... –

+0

intente esto: return (do.call ("table", list (eval (parse (text = var1)), eval (parse (text = var2))))) –

Cuestiones relacionadas