Мы можем создать логическую матрицу с помощью ==
, получить rowSums
, преобразовать его в логический вектор и изменить его на значения индекса 1, 2 и заменить на «Нет», «Да»
* 1004. *
Или другой вариант: ifelse
df1$Result <- ifelse(rowSums(df1 == "Z") > 0, "Yes", "No")
Или мы можем создать условие с lapply
и Reduce
df1$Result <- ifelse(Reduce(`|`, lapply(df1, `==`, "Z")), "Yes", "No")
all три вышеупомянутых метода эффективны, потому что
1) Использование векторизованной опции
2) Не выполнять никаких регулярных выражений, когда мы можем напрямую выполнить сравнение (==
)