Мы можем использовать rowSums
, чтобы создать логический вектор, основанный на вхождении пробела (""
) или NA
(is.na
), проверить, является ли сумма по строкам больше 0, и если да, ' да ', или иначе' нет '
df1$flag <- ifelse(rowSums(df1 == ""|is.na(df1)) > 0, "yes", "no")
Если мы хотим выбрать определенные столбцы, используйте индексирование позиции (2: 4 - для столбцов 2–4) или имена его столбцов
df1$flag <- ifelse(rowSums(df1[2:4] == ""|is.na(df1[2:4])) > 0, "yes", "no")
Или другой вариант - l oop над столбцами и применить логическое условие
c("no", "yes")[1 + (Reduce(`+`, lapply(df1, function(x) x == ""| is.na(x))) > 0)]