Search code examples
rvectorcharacterrow

select rows that match character vector in any column


I'd like to extract df (tax_table) rows that match a character vector (gross) in ANY column. I know to specify for a specific column is:

grossasv <- tax_table[tax_table$column %in% gross,]

but how about every column?


Solution

  • Here's two ways:

    library(tidyverse)
    
    #1
    filter(aux_df, if_any(everything(),\(x) x %in% aux_tz))
    
    #2
    aux_df[list_c(map(aux_df, \(x) which(x %in% aux_tz))), ]
    

    Same output:

    # A tibble: 4 × 3
      col_1           col_2                      col_3            
      <chr>           <chr>                      <chr>            
    1 Africa/Cairo    America/Costa_Rica         America/Boa_Vista
    2 Africa/Sao_Tome Africa/Banjul              America/Belize   
    3 Africa/Kinshasa America/Caracas            Africa/Bamako    
    4 Africa/Timbuktu America/Argentina/San_Juan Africa/Banjul 
    

    Toy data:

    # Toy data
    set.seed(123)
    aux_df <- tibble(
      col_1 = sample(OlsonNames()[1:100], 10),
      col_2 = sample(OlsonNames()[1:100], 10),
      col_3 = sample(OlsonNames()[1:100], 10))
    
    aux_tz <- sample(OlsonNames()[1:100], 10) 
    
    > aux_tz
     [1] "Africa/Lagos"                   "Africa/Bamako"                  "Africa/Banjul"                 
     [4] "Africa/Mbabane"                 "America/Asuncion"               "Africa/Freetown"               
     [7] "Africa/Juba"                    "America/Argentina/Buenos_Aires" "Africa/Tunis"                  
    [10] "America/Costa_Rica" 
         
    > aux_df
    # A tibble: 10 × 3
       col_1                          col_2                      col_3                 
       <chr>                          <chr>                      <chr>                 
     1 Africa/Kinshasa                America/Caracas            Africa/Bamako         
     2 America/Barbados               America/Catamarca          Africa/Mogadishu      
     3 Africa/Timbuktu                America/Argentina/San_Juan Africa/Banjul         
     4 Africa/Cairo                   America/Costa_Rica         America/Boa_Vista     
     5 America/Argentina/Rio_Gallegos America/Anguilla           Africa/Lubumbashi     
     6 Africa/Mogadishu               America/Cayenne            America/Bahia_Banderas
     7 Africa/Sao_Tome                Africa/Banjul              America/Belize        
     8 Africa/Monrovia                America/Cayman             Africa/Monrovia       
     9 America/Coral_Harbour          America/Argentina/Ushuaia  America/Atka          
    10 Africa/Harare                  Africa/Johannesburg        Africa/Casablanca