Vielen Dank im Voraus, und Entschuldigung, wenn diese Frage zuvor beantwortet wurde - ich habe ziemlich ausgiebig gesucht. Ich habe ein Dataset, das eine Zeile mit verketteten Informationen enthält, insbesondere: Name, Farbcode, einige Funktionsausdrücke. Zum Beispiel kann ein Wert sein:Erstellen Sie eine Liste von Funktionen aus einem Vektor von Zeichen
Kosten # FF0033 @ log (x) +6.
Ich habe alle den Code, um die Informationen zu extrahieren, und ich am Ende mit einem Vektor von Ausdrücken, die ich in eine Liste von tatsächlichen Funktionen konvertieren möchte.
Zum Beispiel:
func.list <- list()
test.func <- c("x","x+1","x+2","x+3","x+4")
wo test.func der Vektor von Ausdrücken ist. Was ich möchte, ist:
func.list[[3]]
Um zu
function(x){x+3}
gleichwertig zu sein Ich weiß, dass ich mit einer Funktion erstellen:
somefunc <- function(x){eval(parse(text="x+1"))}
einen Zeichenwert in eine Funktion zu konvertieren. Das Problem tritt auf, wenn ich versuche, mehrere Funktionen auszuführen. Ein Beispiel für etwas, das ich versuchte, das hat nicht funktioniert:
for(i in 1:length(test.func)){
temp <- test.func[i]
f <- assign(function(x){eval(expr=parse(text=temp))})
func.list[[i]] <- f
}
Basierend auf einem anderen Beitrag (http://stats.stackexchange.com/questions/3836/how-to-create-a-vector-of -Funktionen) ich habe auch versucht, dies:
makefunc <- function(y){y;function(x){y}}
for(i in 1:length(test.func)){
func.list[[i]] <- assign(x=paste("f",i,sep=""),value=makefunc(eval(parse(text=test.func[i]))))
}
Welche der folgenden Fehler gibt: Fehler in eval (ausdr, envir, enclos): Objekt 'x' nicht
gefundenDas Fernziel ist es, die Liste zu nehmen von Funktionen und wenden Sie die jth-Funktion auf die j-te Spalte von data.frame an, so dass der Benutzer des Skripts angeben kann, wie jeder col normalisiert werden soll innerhalb der verketteten Information, die durch den Spaltenkopf gegeben wird.
Dank !! Es hat perfekt funktioniert. Ich werde den Code, den ich verwendet habe, um die Aufgabe zu vervollständigen, als zusätzliche Antwort für andere Benutzer hinzufügen, sobald SO es mir erlaubt. (und Entschuldigung für alle Kommentare/Bearbeitungen/Löschungen/und was nicht - ich bin offensichtlich neu in SO) – dayne
@dayne Ich würde sagen, Sie haben die Hand der Dinge ganz gut, im Vergleich zu den durchschnittlichen brandneuen SO-Besucher. – joran