удаление строк из фреймов данных в цикле for

#r #for-loop

#r #for-цикл

Вопрос:

вернитесь к другому

у меня есть несколько фреймов данных, и я пытаюсь удалить (i) строки с определенными строками в одном столбце и (ii) строки с na в том же столбце. Я собрал код формы ниже

    for (i in c(df1, df2, df3)){
      i <- i[!grepl("badString", i["Column"]),]
      i <- i[!is.na(i["Column"], ]
    }
 

Но я продолжаю получать эту ошибку

 Error in i[!grepl("badString", i["Column"]), ] : 
  incorrect number of dimensions
 

Ранее я пытался указать столбец, используя i$Column , но также получил это сообщение об ошибке

 Error: $ operator is invalid for atomic vectors
 

Я также пробовал использовать двойные столбцы (замена на), но также не использовал эту стратегию i["Column"] i[["Column"]]

Еще раз спасибо всем вам за то, что спасаете мою задницу каждый день!!!

Ответ №1:

Поместите фреймы данных в список использования grepl и is.na удалите строки из каждого. Если вы хотите изменить исходный фрейм данных с помощью этих обновленных данных, используйте list2env .

 list_df <- dplyr::lst(df1, df2, df3)
result <- lapply(list_df, function(x) 
                 x[!(grepl('badString', x$Column) | is.na(x$Column)), ])

list2env(result, .GlobalEnv)