Condição lógica enquanto o subconjunto não fornece valores corretos

Eu queria subconectar o quadro de dadosproject Eu estava trabalhando com, usando uma lógica. Estou obtendo um resultado paradoxal. A parte da lógica que precede oROLL.NO. argumento é irrelevante para a questão. Desculpe, não pude dar um exemplo reproduzível. Deixe-me saber como posso tornar essa pergunta reproduzível sem ter que mostrar as 393 entradas inteiras das colunas relevantes no meu quadro de dados.D14 eDC31 são valores inteiros simples, com alguns valores sendoNA.

 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

Tentei entender o que estava dando errado no meu código e também incluí os resultados dessas consultas. Quandoproject$ROLL.NO.==3136 éFALSE para qualquer outroROLL.NO., Não vejo por que outrasROLL.NO. chamado quando outros argumentos são adicionados com um& com isso. Além disso, as mesmas três entradas repetem-se erroneamente com qualquer chamadaROLL.NO. Não háNA valores noROLL.NO. coluna. E o comprimento dos vetores lógicos em cada uma das condições é o mesmo, portanto, não há reciclagem. Informe-me se precisar de informações adicionais.

TERMO ADITIVO

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")

questionAnswers(1)

yourAnswerToTheQuestion