R 如果在多列中找到值,则布尔值为1/0

R 如果在多列中找到值,则布尔值为1/0,r,tidyverse,R,Tidyverse,我有一个像这样的df: x1 x2 x3 1 4 1 2 3 1 2 2 4 如果值1出现在x1、x2、x3中,我将创建一个名为find的新变量。预期结果: x1 x2 x3 found 1 4 1 1 2 3 1 1 2 2 4 0 我正在使用tidyverse和mutate,但找不到如何使用多个列进行变异 谢谢 我们可以使用行和: df$found <- +(rowSums(df == 1) > 0) # x1 x2 x3 found #1

我有一个像这样的df:

x1 x2 x3
1  4  1
2  3  1
2  2  4 
如果值1出现在x1、x2、x3中,我将创建一个名为find的新变量。预期结果:

x1 x2 x3 found
1  4  1  1
2  3  1  1
2  2  4  0
我正在使用tidyverse和mutate,但找不到如何使用多个列进行变异


谢谢

我们可以使用
行和

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

其他一些方式:

df$found <- +(apply(df == 1, 1, any))
df$found <- +(Reduce(`|`, lapply(df, `==`, 1)))
df$found
df$found <- +(apply(df == 1, 1, any))
df$found <- +(Reduce(`|`, lapply(df, `==`, 1)))