Utwórz listę funkcji z wektora znaków
Z góry dziękuję i przepraszam, jeśli na to pytanie udzielono wcześniej odpowiedzi - wyglądałem dość obszernie. Mam zestaw danych zawierający wiersz z połączonymi informacjami, w szczególności: nazwa, kod koloru, niektóre wyrażenia funkcji. Na przykład jedną wartością może być:
koszt # FF0033 @ log (x) +6.
Mam cały kod do wyodrębnienia informacji i kończę na wektorze wyrażeń, który chciałbym przekonwertować na listę rzeczywistych funkcji.
Na przykład:
func.list <- list()
test.func <- c("x","x+1","x+2","x+3","x+4")
gdzie test.func jest wektorem wyrażeń. Chciałbym:
func.list[[3]]
Aby być równoważnym
function(x){x+3}
Wiem, że mogę utworzyć funkcję przy użyciu:
somefunc <- function(x){eval(parse(text="x+1"))}
przekształcić wartość znaku w funkcję. Problem pojawia się, gdy próbuję zapętlić wiele funkcji. Na przykład czegoś, czego próbowałem, nie zadziałało:
for(i in 1:length(test.func)){
temp <- test.func[i]
f <- assign(function(x){eval(expr=parse(text=temp))})
func.list[[i]] <- f
}
Opierając się na innym poście (http://stats.stackexchange.com/questions/3836/how-to-create-a-vector-of-functions), spróbowałem również tego:
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]))))
}
Który daje następujący błąd: Błąd w eval (expr, envir, enclos): nie znaleziono obiektu „x”
Ostatecznym celem jest pobranie listy funkcji i zastosowanie funkcji jth do j-tej kolumny ramki data.fr, aby użytkownik skryptu mógł określić, jak normalizować każdą kolumnę w połączonych informacjach podanych przez nagłówek kolumny.