逻辑运算符和,或不起作用

时间:2019-09-17 03:06:06

标签: r dataframe conditional-statements

R条件无法正常工作。

我正在使用逻辑运算符&&和||但两者都不起作用。

df = data.frame(c("enrty 1","enrty 2","enrty 3") ,c(12200, 1, 120), c(111111, 12, 123), c(1, 1, 0 ) , c(0,1,0), c(1,0,1))

names(df) = c('Name', 'X1', 'X2', 'X3','X4','X5')

if (((df$X3 > 1) || (df$X1  < 1000)) &&  ((df$X4 > 1) || (df$X2 < 1000))){
  df$condition1 = 1
} else {
  df$condition1 = 0
}

if ((df$X3 > 1) || (df$X1  < 1000)) {  
  df$condition2 = 1
} else {
  df$condition2 = 0
}

if ((df$X4 > 1) || (df$X2 < 1000)) {  
  df$condition3 = 1
} else {
  df$condition3 = 0
}

输出: https://drive.google.com/file/d/1P6VrT-xePBXNaYUi2fdKTJyuhThc4jcf/view?usp=sharing

1 个答案:

答案 0 :(得分:1)

一种简单的方法来执行您需要的操作,就是使用向量化方法

df$condition <- +(with(df, (X3 > 1 | X1  < 1000) &  (X4 > 1 | X2 < 1000)))

df
#     Name    X1     X2 X3 X4 X5 condition
#1 enrty 1 12200 111111  1  0  1         0
#2 enrty 2     1     12  1  1  0         1
#3 enrty 3   120    123  0  0  1         1

开头的+将逻辑值转换为整数。

另请参阅:Boolean operators && and ||