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 mauf und liefert ein Vektor. Kann mir bitte jemand darauf hinweisen, was falsch mit diesem code.

Sie nie etwas im inneren 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

Schreibe einen Kommentar