Kann mir jemand sagen, warum die Verwendung von eval(parse(text=xxxx))
schlägt fehl, wenn es zwischen einem von mehreren Datenrahmen zur Ausgabe als die Rückkehr aus einer FunktionR Eval Problem mit der Funktion Rückkehr
zum Beispiel zur Auswahl verwendet wird Ich habe drei Datenrahmen innerhalb einer Funktion erzeugt;
aaa.df, bbb.df, ccc.df
und ein 'Modus' -Parameter z.B. aaa/bbb/ccc (die in diesem Fall zeigt die Datenrahmen aus der Funktion zurück)
die folgenden zwei-liner funktioniert
eval(parse(text=paste("output.df<-",mode,".df", sep="")))
return(output.df)
jedoch bei dem Versuch, diese beiden Zeilen rein für eine kondensieren etwas knapper, die Zwischenzuordnung zu output.df entfernend, wird der Datenrahmen nicht ausgegeben
z
eval(parse(text=paste("return(",mode,".df)", sep="")))
Es wird keine große Sache für mich, mit dem ersten Ansatz fortzusetzen, bis ich mit einem sehr großen Datenrahmen am Ende zurück, an welcher Stelle ich es annehmen könnte einiger Performance/Speicher-Hit.
Es ist schwer zu sagen, weil Sie nicht genug bereitgestellt haben, damit wir Ihr Problem neu erstellen können. Aber hast du versucht, Klammern um deinen ganzen Ausdruck zu legen? '(eval (parse (text = einfügen (" return (", mode,". df) ", sep =" "))))' – Jake
Habe das nicht versucht tbh. Ich hätte gedacht (obwohl Sie jetzt vorschlagen, dass ich weniger zuversichtlich bin), dass das Umbrechen eines ganzen Ausdrucks in Klammern wie dieser absolut keinen Einfluss auf die Codeausführung hätte. Aber es gibt vielleicht eine Facette der R-Syntax, die ich hier verpasst habe ... – Pascoe
Es gibt sicherlich viel bessere Möglichkeiten, um zu wählen, welcher data.frame von einer Funktion zurückkehren soll. 'eval (parse())' ist normalerweise eine schlechte Idee im R-Code. Selbst ein einfaches 'get()' wäre hier wahrscheinlich besser. – MrFlick