Мы можем использовать rowSums
:
df$found <- +(rowSums(df == 1) > 0)
# x1 x2 x3 found
#1 1 4 1 1
#2 2 3 1 1
#3 2 2 4 0
Если вы хотите использовать его в dplyr
pipe:
library(dplyr)
df %>% mutate(found = +(rowSums(. == 1) > 0))
Некоторые другие способы:
df$found <- +(apply(df == 1, 1, any))
df$found <- +(Reduce(`|`, lapply(df, `==`, 1)))
+
в начале преобразует логические значения из TRUE
/ FALSE
в 1
/ 0
соответственно.