Wir müssen den Rowindex richtig bekommen. Es könnte entweder ein vector
von logical
oder numeric
Index sein. Im Vergleich (es ist besser, list
anstelle von c
zu verwenden, da wir keine Klassen mischen wollen) erhalten wir eine logische matrix
, die auf einen Vektor reduziert werden muss. Eine Option ist rowSums
und prüfen, ob die Summe jeder Zeile 2, dh die Anzahl der Spalten gleich ist zum Vergleich herangezogen und Teilmenge der Zeilen
test[rowSums(test[c("col1", "col2")] == list(3, 'c'))==2,]
# col1 col2 col3
#3 3 c 6
#4 3 c 7
Nun schauen wir uns den Unterschied in der Herangehensweise mit c
und list
test[c("col1", "col2")]==c(3,"c")
# col1 col2
#1 FALSE FALSE
#2 FALSE FALSE
#3 TRUE FALSE
#4 FALSE TRUE
Hier wird Elemente durch Rückführung der Elemente einer nach dem anderen, dh für ‚spalte1‘ zu vergleichen, wird 1 mit 3 verglichen, dann 2 mit ‚C‘, gefolgt von der Rückführung des Vektors, dh 3 mit 3 und wieder die nächsten 3 wit h 'c'. Es folgt der gleiche Weg mit der nächsten Spalte.
test[c("col1", "col2")]== list(3,"c")
# col1 col2
#1 FALSE FALSE
#2 FALSE FALSE
#3 TRUE TRUE #note the change
#4 TRUE TRUE
Während hier, vergleicht er die ersten Spaltenelemente mit dem ersten Elemente der list
dh das list
Element repliziert wird oder anschließend recycelt, indem die zweite Säule, die mit zweiten list
Elemente Vergleich
anzumerken, dass es 8 ist Elemente, dh 4 pro Spalte.Es kommt also vor, dass es im ersten Fall 2 TRUE-Elemente gibt und im zweiten Fall 4 TRUE und es gibt 8 Elemente, aber wir haben nur 4 Zeilen. Wenn also die zweite Spalte der logischen Matrix keine Zeilen enthält, wird sie erstellt die NA Zeile für den wahren Wert
test[test[c("col1", "col2")]==c(3,"c"),]
# col1 col2 col3
#3 3 c 6
#NA NA <NA> NA
Ebenso gibt es 2 TRUE in jeder Spalte, wodurch wiederum die Anzahl der NA Zeilen verdoppelt
test[test[c("col1", "col2")]==list(3,"c"),]
# col1 col2 col3
#3 3 c 6
#4 3 c 7
#NA NA <NA> NA
#NA.1 NA <NA> NA
Angenommen, wir vergleiche auch die 3. Spalte, dann gibt wird eine zusätzliche NA Zeile sein
test[test==list(3,"c", 5),]
# col1 col2 col3
#3 3 c 6
#4 3 c 7
#NA NA <NA> NA
#NA.1 NA <NA> NA
#NA.2 NA <NA> NA
Hier
Danke für die ausführliche Erklärung. – noname