2010-08-04 10 views
5

Ich möchte eine Funktion erstellen, die einen Dataset-Namen und einen Paketnamen akzeptiert und das Dataset als data.frame zurückgibt. Hier ist mein VersuchEine Funktion, die ein Dataset zurückgibt

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

Diese Funktion schlägt jedoch fehl. Das Problem scheint zu sein, dass der Aufruf von data() nicht den Wert der Namensvariablen nachschlägt, sondern "name".

Ich weiß bereits, wie man von einer Variablen zu seinem Namen, über deparse (Ersatz (var)) gehen. Aber wie gehe ich von "var" zu var?

Jeder Hinweis geschätzt!

Antwort

5

Geben Sie eine dieser

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

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

versuchen Wenn Sie auf der Konsole ausgegeben nicht den Datensatz möchten, verwenden Sie 'invisible' statt' return'. –

+0

Nun, das half bestimmt. Vielen Dank! Ich habe jetzt ein ähnliches Problem mit Tabelle(). Sprich ich habe cgd aus dem Survival angehängt und will jetzt Tisch (Sex, Treat), habe aber wieder nur Strings "Sex" und "Treat". Wie kann ich das machen? do.call ("table", list ("sex", "treat")) fehlgeschlagen ... –

+0

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

Verwandte Themen