2010-08-04 29 views
5

Desidero creare una funzione che accetta un nome del set di dati e un nome di pacchetto e restituisce il set di dati come data.frame. Ecco il mio tentativoUna funzione che restituisce un set di dati

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

Tuttavia, questa funzione non riesce. Il problema sembra essere che la chiamata a data() non cerca il valore della variabile name, ma piuttosto "name".

So già come passare da una variabile al suo nome, tramite deparse (sostituto (var)). Ma come faccio a passare dall'altra parte, da "var" a var?

Qualsiasi suggerimento apprezzato!

risposta

5

dare una prova

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

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

Se non si desidera che il set di dati stampati alla console, utilizzare 'invisible' invece di' return'. –

+0

Beh, questo ha sicuramente aiutato. Grazie! Ora ho un problema simile con table(). Diciamo che ho attaccato il cgd alla sopravvivenza e ora desidero un tavolo (sesso, trattamento), ma ho di nuovo solo le stringhe "sex" e "treat". Come lo posso fare? do.call ("table", list ("sex", "treat")) non è riuscito ... –

+0

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

Problemi correlati