2013-04-12 11 views
6

Ich versuche zu lernen, wie die Anwendungsfunktion zu verwenden, und ich stieß auf dieses Tutorial: http://nsaunders.wordpress.com/2010/08/20/a-brief-introduction-to-apply-in-r/ scheint klar und prägnant, aber ich bin auf ein Problem sofort. Das allererste Beispiel, das sie demonstrieren, ist:Fehler beim Anwenden der Funktion in R auf Tutorial anwenden Beispiel

Das scheint sehr einfach, aber ich dachte, ich würde es versuchen. Hier mein Ergebnis ist:

> # create a matrix of 10 rows x 2 columns 
> m <- matrix(c(1:10, 11:20), nrow = 10, ncol = 2) 
> # mean of the rows 
> apply(m, 1, mean) 
Error in FUN(newX[, i], ...) : unused argument(s) (newX[, i]) 

Unnötig zu sagen, ich bin auf diesen einen verloren ...

einige weitere Informationen zu liefern, habe ich versucht, ein anderes Beispiel im Tutorial zur Verfügung gestellt und bekam das richtige Ergebnis. Der Unterschied in diesem Fall war, dass die Funktion speziell in der Anwendung Funktion angegeben wurde:

apply(m, 1:2, function(x) x/2) 
     [,1] [,2] 
[1,] 0.5 5.5 
[2,] 1.0 6.0 
[3,] 1.5 6.5 
[4,] 2.0 7.0 
[5,] 2.5 7.5 
[6,] 3.0 8.0 
[7,] 3.5 8.5 
[8,] 4.0 9.0 
[9,] 4.5 9.5 
[10,] 5.0 10.0 

Session() -Ausgabe unter:

R version 2.15.3 (2013-03-01) 
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) 

locale: 
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

loaded via a namespace (and not attached): 
[1] tools_2.15.3 

Und die Ausgabe für Konflikte (Details = TRUE)

$.GlobalEnv 
[1] "edit" "mean" 

$`package:utils` 
[1] "edit" 

$`package:methods` 
[1] "body<-" "kronecker" 

$`package:base` 
[1] "body<-" "kronecker" "mean" 
+2

Können Sie die Ausgabe von 'sessionInfo()' und 'conflicts (detail = TRUE)' in Ihre Frage einfügen? Es ist ziemlich seltsam! –

+1

Starten Sie eine saubere Sitzung, es funktioniert für mich. –

+0

Ich fügte der ursprünglichen Nachricht zusätzliche Informationen hinzu. – tjnel

Antwort

2

Wie andere festgestellt haben, ist es wahrscheinlich, weil Sie einen Konflikt auf mean haben. Wenn Sie etwas nennen (Funktionen, Objekte), geht R durch den Suchpfad, bis es gefunden (und wenn es nicht R wird sich beschweren, entsprechend gefunden wird):

> search() 
[1] ".GlobalEnv"  "tools:RGUI"  "package:stats"  
[4] "package:graphics" "package:grDevices" "package:utils"  
[7] "package:datasets" "package:methods" "Autoloads"   
[10] "package:base" 

Wenn Sie R ziemlich neu sind, Note Wenn Sie eine Funktion erstellen, werden Sie normalerweise in ".GlobalEnv" leben, wenn Sie nicht anders angeben. R sucht zuerst, bevor es weitergeht, also ist es ziemlich wichtig, Ihre Funktionen mit Bedacht zu benennen, um nicht mit den üblichen Funktionen in Konflikt zu geraten (z. B. mean, plot, summary).

Es ist wahrscheinlich eine gute Idee, ab und zu mit einer sauberen Sitzung zu beginnen. Es ist ziemlich üblich, in der Debugging-Phase die Variablen x oder y zu benennen (Namen, die eher der Zweckmäßigkeit als der Informiertheit entnommen sind ... wir sind schließlich nur Menschen), was auf der ganzen Linie unerwartet problematisch sein kann. Wenn Sie einen Arbeitsbereich haben, der ziemlich voll ist, erhöht sich die Wahrscheinlichkeit von Konflikten, also (a) wählen Sie Namen sorgfältig aus und (b) starten Sie ohne Wiederherstellung neu, wäre mein Rat.

Verwandte Themen