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