hinzufügen von Werten an den vector im inneren for-Schleife in R
Ich habe gerade angefangen zu lernen, dass R und ich schrieb diesen code erfahren Sie auf Funktionen und Schleifen.
squared<-function(x){
m<-c()
for(i in 1:x){
y<-i*i
c(m,y)
}
return (m)
}
squared(5)
NULL
Warum diese NULL zurück. Ich will i*i
Werte zum Anhängen an das Ende der m
auf und liefert ein Vektor. Kann mir bitte jemand darauf hinweisen, was falsch mit diesem code.
Sie nie etwas im inneren
Ich denke, Sie wollen
m <- c()
.Ich denke, Sie wollen
m <- c(m, y)
statt nur c(m, y)
. That being said, sollten Sie wirklich nicht bauen Vektoren durch anfügen eines Elements an eine Zeit-siehe den zweiten Kreis der R inferno für details. Teil der Schönheit von R ist seine vektorisierte Operationen-Sie können einfach tun squared <- function(x) x^2
. Dies ist mit viel weniger Tippen und viel effizienter.InformationsquelleAutor sam_rox | 2015-09-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie nicht alles, was im inneren
m <- c()
in der Schleife, da Sie nicht einen Auftrag. Sie werden immer die folgenden -Können Sie ändern Sie die Funktion geben Sie die gewünschten Werte durch die Zuordnung
m
in der Schleife.Aber das ist ineffizient, weil wir wissen, dass die Länge des resultierenden Vektors werden die 5 (oder
x
). So wollen wir den Speicher zuerst, bevor Sie eine Schleife. Dies wird der bessere Weg, um diefor()
Schleife.Beachten Sie auch, dass habe ich entfernt
return()
von der zweiten Funktion. Es ist nicht notwendig, so dass es entfernt werden kann. Es ist eine Frage der persönlichen Vorliebe, es zu verlassen in dieser situation. Manchmal wird es notwendig sein, wie inif()
Aussagen zum Beispiel.Ich weiß die Frage ist über die Schleife, aber ich muss auch erwähnen, dass dies getan werden kann, effizienter mit sieben Zeichen, die mit der primitiven
^
, wie diese^
ist eine primitive Funktion, was bedeutet, dass der code vollständig geschrieben in C und wird am effizientesten von diesen drei MethodenIch fühle mich wie ich vielleicht haben es getan es. Haha
Danke für die Erklärung. Ich würde gerne wissen, warum
<-
verwendet werden und kann nicht=
verwendet werden, in der R? Das ist, kann ich nicht den code alsy=i*i
? Ist es nötig zu sein, alsy<-i*i
entweder hier funktioniert. Lesen Sie mehr über die Unterschiede hier: stackoverflow.com/questions/1741820/...
InformationsquelleAutor Rich Scriven