Ich habe eine Datentabelle und ich möchte in Spalte "X" gehen und die ith Wert und die ith + j Wert, da sie eine Bedingung erfüllenFor-Schleife in R, erhalten die i-ten und i-ten + j Zeileneintrag in einer Spalte
ich folgendes sagen Datentabelle „z“ haben:
z
weight height length
1: 9.436635 1 79.16808
2: 6.452202 0 86.33170
3: 4.639220 1 60.52781
4: 7.941667 1 33.79673
5: 3.135519 1 68.47615
6: 7.918595 1 69.77795
7: 3.950212 1 49.74780
8: 7.109392 0 58.41541
9: 5.783499 0 51.30477
10: 5.056078 1 78.37624
11: 9.436635 1 51.69053
12: 6.452202 0 18.39108
13: 4.639220 1 48.52367
14: 7.941667 1 20.99888
15: 3.135519 1 29.77180
ich etwas schreiben möchte, die mir den ersten Wert in der Höhe Säule geben und die zweiter Wert basierend auf der folgenden Bedingung
Ich möchte eine Schleife schreiben wie:
list1 <- list()
> for (i in -1:nrow(z)){
+ list[[i]] <- z[height == 1 & height+i == 0,]
+ }
Also, was ich will, ist die Vorkommen zu erhalten, wo Höhe == 1 und dann der unmittelbar folgende Höhe == 0. ich jedoch festgestellt, dass ich kann, schreib keine Schleife wie diese.
Im Wesentlichen möchte ich alle Zeilen, wo ich eine 1 haben, gefolgt von einer 0 in der Höhe Spalte.
Sorry, wenn es eine dumme Frage ist, aber was macht .Ich mache? –
@Gin_Salmon Wir erhalten den logischen 'TRUE/FALSE' Vektor mit (' height == 1 & ... '). Mit '.I' erhalten wir den Zeilenindex. also ähnlich wie 'which (c (WAHR, FALSCH, FALSCH, WAHR)) ', jedoch wird' .I' sehr nützlich sein, wenn wir eine Gruppe durch Operation machen. Wenn wir 'which' machen, gibt es nur den Index der Zeile innerhalb einer Gruppe, aber' .I' gibt den tatsächlichen Zeilenindex basierend auf dem gesamten Datensatz an. – akrun