2013-08-15 11 views
5

Ich habe von github die Functionals lesen. Ein Vorschlag auf der Seite war call_function zu verwenden, wenn man mit einer Liste von Funktionen arbeiten. Hier ist der Code von der Seite:funktionale Programmierung in R

call_fun <- function(f, ...) f(...) 
f <- list(sum, mean, median, sd) 
lapply(f, call_fun, x = runif(1e3)) 

Der Ausgang als gepostet:

# [[1]] 
# [1] 498 
# 
# [[2]] 
# [1] 0.498 
# 
# [[3]] 
# [1] 0.49 
# 
# [[4]] 
# [1] 0.29 

Allerdings war ich nicht in der Lage, die obigen Ergebnisse zu replizieren. Ich habe den Fehler:

Error in FUN(X[[4L]], ...) : could not find function "f" 

Bin ich hier etwas fehlt?

Antwort

5

Sie haben die Funktion sd neu definiert:

sd = 2 

call_fun <- function(f, ...) f(...) 
f <- list(sum, mean, median, sd) 
lapply(f, call_fun, x = runif(1e3)) 
#Error in FUN(X[[4L]], ...) : could not find function "f" 

Ihre Sitzung neu starten oder rm(sd) tun.

+0

Dank @eddi. Ich bin mir nicht sicher, ob meine Frage für zukünftige Benutzer nützlich sein wird. Ich werde gerne löschen, wenn es trivial erscheint. – Metrics

+3

Ich bin mir nicht sicher, ob Sie es löschen können. Es hat bereits einen upvote (meins) und upvotes auf die Antwort (meins und anothers). Ich bin immer noch neugierig, ob es einen programmatischen Weg gibt, mit dem Problem umzugehen. Ich habe versucht, 'call_fun <- Funktion (f, ...) match.fun (f) (...)', die im einfachsten Fall gelingt und nicht auf die gleiche Weise mit 'sd == 5' in der Umwelt. –

+1

@Metrics Ich habe in diese exakt gleiche Problem laufen, bevor mit 'sd' (es gibt nur so viele aus zwei Buchstaben bestehenden Variablennamen), es ist so wahrscheinlich nicht allzu selten einen Fehler (nicht so sicher, ob man diese Frage durch eine finden Suchmaschine) – eddi

Verwandte Themen