Logische Bedingung, während die Teilmenge nicht die richtigen Werte angibt

Ich wollte den Datenrahmen @ unterteilproject Ich habe mit einem logischen gearbeitet. Ich erhalte ein paradoxes Ergebnis. Der Teil der Logik vor demROLL.NO.as Argument @ ist für die Frage irrelevant. Entschuldigung, ich konnte kein reproduzierbares Beispiel nennen. Lassen Sie mich wissen, wie ich diese Frage reproduzierbar machen kann, ohne die gesamten 393 Einträge der relevanten Spalten in meinem Datenrahmen anzeigen zu müssen.D14 undDC31 sind einfache Ganzzahlen, wobei einige Werte @ siNA.

 culprits<-project$ROLL.NO.[(project$DC31==1&project$D14==2)|(project$DC31==2&project$D14==1)&!is.na(project$DC31)&!is.na(project$D14)]
culprits
 [1] 3138 3129 3129 3135 3135 3136 3120 3126 3133 3125 3125 3125 3132 3132 3123 3123 3131
 project$HOUSE.NO[(project$DC31==1&project$D14==2)|(project$DC31==2&project$D14==1)&!is.na(project$DC31)&!is.na(project$D14)&project$ROLL.NO.==3131]
[1] "14/132" "14/176" "16/133" "14/111" "14/252"
> project$HOUSE.NO[(project$DC31==1&project$D14==2)|(project$DC31==2&project$D14==1)&!is.na(project$DC31)&!is.na(project$D14)&project$ROLL.NO.==3129]
[1] "14/132" "15/162" "14/176" "16/133" "14/111"
> project$ROLL.NO.[(project$DC31==1&project$D14==2)|(project$DC31==2&project$D14==1)&!is.na(project$DC31)&!is.na(project$D14)&project$ROLL.NO.==3136]
[1] 3129 3136 3120 3123 3123
 project$ROLL.NO.[(project$DC31==1&project$D14==2)|(project$DC31==2&project$D14==1)&!is.na(project$DC31)&!is.na(project$D14)&project$ROLL.NO.==3125]
[1] 3129 3120 3125 3125 3125 3123 3123
project$ROLL.NO.[project$ROLL.NO.==3136]
[1] 3136 3136 3136 3136 3136 3136 3136 3136 3136

Ich habe versucht zu verstehen, was in meinem Code schief gelaufen ist, und ich habe auch die Ergebnisse dieser Abfragen berücksichtigt. Wannproject$ROLL.NO.==3136 istFALSE für ein beliebiges anderesROLL.NO., Ich verstehe nicht, warum andereROLL.NO. wird aufgerufen, wenn andere Argumente mit einem @ hinzugefügt werd& damit. Darüber hinaus wiederholen sich dieselben drei Einträge fälschlicherweise zusammen mit einem aufgerufenen ROLL.NO. Es gibt keineNA Werte imROLL.NO. Säule. Und die Länge der logischen Vektoren in jeder der Bedingungen ist gleich, daher kein Recycling. Lassen Sie mich wissen, ob zusätzliche Informationen erforderlich sind.

NACHTRA

project <-  structure(list(ROLL.NO. = c(3138L, 3138L, 3138L, 3138L, 3138L, 
3138L, 3138L, 3138L, 3138L, 3138L, 3138L, 3138L, 3138L, 3138L, 
3138L, 3138L, 3138L, 3138L, 3138L, 3138L, 3138L, 3129L, 3129L, 
3129L, 3129L, 3129L, 3129L, 3129L, 3129L, 3129L, 3129L, 3129L, 
3129L, 3129L, 3129L, 3129L, 3129L, 3129L, 3129L, 3129L, 3129L, 
3129L, 3129L, 3129L, 3121L, 3121L, 3121L, 3121L, 3121L, 3121L
), DC31 = c(2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 
1L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 
2L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 
1L, 2L, 2L, 2L, 2L), D14 = c(2L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 
1L, 2L, 1L, 2L, 0L, 1L, 2L, 2L, 0L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 
2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L), HOUSE.NO = c("14/274", 
"14/259", "14/217", "14/258", "14/306", "14/300", "14/96", "14/166", 
"14/69", "14/68", "14/16", "14/93", "14/130", "14/321", "14/324", 
"14/139", "14/314", "14/323", "14/208", "14/78", "14/150", "14/155", 
"14/102", "14/132", "14/159", "14/163", "14/165", "14/146", "14/148", 
"14/104", "14/56", "14/53", "14/99", "14/48", "15/164", "15/148", 
"15/158", "15/107", "15/160", "15/162", "15/243", "15/66", "15/249", 
"15/86", "14/388", "14/396", "14/431", "14/401", "14/103", "15/36"
)), .Names = c("ROLL.NO.", "DC31", "D14", "HOUSE.NO"), row.names = c(NA, 
50L), class = "data.frame")

Antworten auf die Frage(2)

Ihre Antwort auf die Frage