2017-11-13 5 views
0

Ich habe eine for-Schleife Druckwerte aus diesem kleinen Testdatenrahmen. For Schleife überspringt Zeilen in R Datenframe

 USA Finland China Sweden 
1  1  3   5.505962 8.310596 
2  2  4  11.033347 5.425747 
3  3  5  14.932882 3.272544 
4  4  6  10.155517 5.980190 
5  5  7  11.020148 3.692313 
Total 0  0   0.000000 0.000000 

Diese Zeile druckt eine Zeile aus dem Datenrahmen:

print(countries[2,]) 

und Ergebnisse in dieser:

USA Finland China Sweden 
2 2 4  11.03335 5.425747 

auf das So basiert, ich stelle mir vor, ich könnte in eine das gleiche tun for loop und drucke alle Zeilen aus. Code für die Schleife:

Allerdings ergibt dies nur jede zweite ausgedruckte Zeile, die keinen Sinn ergibt. Das Ergebnis, das ich bekomme, ist das:

USA Finland China Sweden 
1 1 3   5.505962 8.310596 
    USA Finland China Sweden 
3 3 5   14.93288 3.272544 
    USA Finland China Sweden 
5 5 7   11.02015 3.692313 
    USA Finland China Sweden 
NA NA NA   NA  NA 

Was könnte dazu führen, dass dies passiert? Ich verwende R Studio, also könnte es sein, dass die Konsolenprotokollierung nicht mit den Werten übereinstimmt?

+1

Verwenden Sie 'for (i in 1: 5)' oder 'for (i in 1: nrow (Länder))' als erste Zeile. – lmo

Antwort

1

@lmo Kommentar vorschlagen Lösung. Ich denke, dass Sie wissen wollen, warum das passiert ist, also werde ich versuchen, das zu beantworten.

Sie verwenden diesen Code:

1: for (i in countries[1,]) 
2: {  
3:  print(countries[i,]) 
4: } 

In Zeile 1 Sie einen Vektor von Werten auszuwählen, die i verwenden werden. Dieser Vektor ist die erste Zeile Ihrer Daten: 1 3 5.505962 8.310596. Es übersetzt sich in einen Vektor c(1,3,5,8) - als Indizes.

Also in Linie 3 Sie drucken Linien 1, 3, 5, 8 (weil Sie diese Indizes wählen). Es war ziemlich zufällig, dass es sogar Reihen gab, aber ich hoffe, dass Sie es besser verstehen.

Natürlich sollten Sie df[1:5,] oder print(df) anstelle von for verwenden.

+0

Vielen Dank für die Erklärung! Ein bisschen lächerliches Glück, dass die Werte zufällig jede zweite Zeile waren. Und die for-Schleife existiert, weil ich mehr tun wollte, als nur die Werte zu drucken und zum Beispiel die Summe jeder Spalte zu berechnen – Joonas