如果该行包含任何“TRUE”,则保留该行

TJ *_* Wu 2 boolean-logic r dataframe

我有一张像这样的桌子

    C1      C2      C3      C4      C5....    
R1  FALSE   FALSE   TRUE    TRUE
R2  FALSE   FALSE   NA      TRUE
R3  NA      NA      NA      TRUE
R4  NA      FALSE   FALSE   FALSE
R5  NA      NA      NA      NA
.
.
.
Run Code Online (Sandbox Code Playgroud)

我想保留所有包含至少一个 TRUE 的行。在该表中,需要保留 R1、R2 和 R3。然后,我可以从同一个表中提取另一列(C21)的值。

请给我一些建议,谢谢!

Pet*_*ter 5

# Example
x <- 
  matrix(c(FALSE, FALSE, NA, NA, NA, FALSE, FALSE, NA, FALSE, NA, TRUE, NA, NA, FALSE, TRUE, TRUE, FALSE, NA), 
         nrow = 5, ncol = 4, dimnames = list(paste0("R", 1:5), paste0("C", 1:4)))
x
#       C1    C2    C3    C4
# R1 FALSE FALSE  TRUE  TRUE
# R2 FALSE FALSE    NA FALSE
# R3    NA    NA    NA    NA
# R4    NA FALSE FALSE FALSE
# R5    NA    NA  TRUE FALSE

# apply the 'any()' function to the rows, this will return true if there is at
# least one TRUE in the row

apply(x, 1, any)
# R1   R2   R3   R4   R5 
# TRUE   NA   NA   NA TRUE 

# use 'which' to get the row index

which(apply(x, 1, any)) 
# R1 R5 
#  1  5 

# subset the matrix
idx <- which(apply(x, 1, any))

x[idx, ]
#       C1    C2   C3    C4
# R1 FALSE FALSE TRUE  TRUE
# R5    NA    NA TRUE FALSE
Run Code Online (Sandbox Code Playgroud)