2014-10-12 28 views

Antwort

9

Mit dem Aufruf print wird das Ergebnis jeder Iteration immer an die Konsole ausgegeben. Wenn Sie den Befehl print verlassen, erhalten Sie möglicherweise unerwünschte Ausgaben.

Ihr Hauptproblem ist, dass Sie my_vector vor der for Schleife nicht initialisiert haben. Sie können stattdessen das folgende tun und nicht den print Nebeneffekt erhalten.

my_vector <- vector("numeric", 10L) 
for(i in 1:10) my_vector[i] <- i 
my_vector 
# [1] 1 2 3 4 5 6 7 8 9 10 

Aber beachten Sie, dass dies die folgenden mit sapply wie zu tun, aber in diesem Fall müssen Sie keine Erklärung nur die gleiche ist, und Sie können das Ergebnis auf einen Vektor zuordnen.

my_vector2 <- sapply(1:10, function(x) x) 
my_vector2 
# [1] 1 2 3 4 5 6 7 8 9 10 
+3

äquivalent: 'sapply (1:10, Identität)', 'sapply (1:10, Kraft) 'oder' sapply (1:10, "(") '. Oder mit vapply:' vapply (1:10, ", 1L)' – GSee

+0

Ah, 'Kraft' ist, woran ich früher gedacht habe "(" 'Methode ist aber definitiv neu für mich. Das hätte ich mir nie gedacht. –

0

folgende Formular kann auch verwendet werden:

> my_vector = c() 
> for(i in 1:5)  my_vector[length(my_vector)+1] = i 
> my_vector 
[1] 1 2 3 4 5 
+0

Dies ist ein wachsendes Objekt in der Erinnerung ist Kreis II von [R Inferno] (http://www.burns-stat.com/pages/Tutor/R_inferno.pdf) – GSee

0

Alternativ

my_vector = c() 
for(i in 1:5){my_vector=c(my_vector,i)} 
my_vector