R 如何将逻辑向量合并到新列中

R 如何将逻辑向量合并到新列中,r,dataframe,R,Dataframe,我有很多列的逻辑向量,希望能够将2个或更多列合并为一个,如果行中有任何TRUE,则只在合并的列中得到一个TRUE 下面是两列和各种组合的示例 X <- c(T,F,T,F,F,T,F,T,T,F,F,F) Y <- matrix(X,nrow = 6, ncol = 2) Y [,1] [,2] [1,] TRUE FALSE [2,] FALSE TRUE [3,] TRUE TRUE [4,] FALSE FALSE [5,] FALSE FALSE [6,

我有很多列的逻辑向量,希望能够将2个或更多列合并为一个,如果行中有任何TRUE,则只在合并的列中得到一个TRUE

下面是两列和各种组合的示例

X <- c(T,F,T,F,F,T,F,T,T,F,F,F)
Y <- matrix(X,nrow = 6, ncol = 2)
Y
      [,1] [,2]
[1,]  TRUE FALSE 
[2,] FALSE  TRUE
[3,]  TRUE  TRUE
[4,] FALSE FALSE
[5,] FALSE FALSE
[6,]  TRUE FALSE

如何创建一个第三列,如果两个都说False,那么添加true和leaving behind,如果要添加3个或更多列,这也可以吗?

使用下面基于基本R的代码

X <- c(T,F,T,F,F,T,F,T,T,F,F,F)
Y <- as.data.frame(matrix(X,nrow = 6, ncol = 2))
unique(Y$V1)

Y$condition <- ifelse(Y$V1 == "TRUE" | Y$V2 == "TRUE","TRUE","FALSE")

使用以下基于Base R的代码

X <- c(T,F,T,F,F,T,F,T,T,F,F,F)
Y <- as.data.frame(matrix(X,nrow = 6, ncol = 2))
unique(Y$V1)

Y$condition <- ifelse(Y$V1 == "TRUE" | Y$V2 == "TRUE","TRUE","FALSE")

下面是一个可能的解决方案,它使用apply和logical运算符|,可用于任意数量的Y列


下面是一个可能的解决方案,它使用apply和logical运算符|,可用于任意数量的Y列


如果所有列中都有逻辑向量,则可以使用行和


如果任何行中至少有1个TRUE,则返回TRUE,否则返回FALSE。这也适用于任意数量的列

如果所有列中都有逻辑向量,则可以使用行和

如果任何行中至少有1个TRUE,则返回TRUE,否则返回FALSE。这也适用于任意数量的列

cbind(Y, rowSums(Y) > 0)

#      [,1]  [,2]  [,3]
#[1,]  TRUE FALSE  TRUE
#[2,] FALSE  TRUE  TRUE
#[3,]  TRUE  TRUE  TRUE
#[4,] FALSE FALSE FALSE
#[5,] FALSE FALSE FALSE
#[6,]  TRUE FALSE  TRUE