R中的三个逻辑运算符

时间:2018-06-26 10:37:54

标签: r if-statement logical-operators

我想在同一行中检查R中的三个逻辑运算符。那就是如果x1 x3小于0.05 x2小于0.1

,我希望Y1变为1。
if (x1 <0.05 | x2 < 0.1 | x3 <0.05) {  
    Y1 <- 1 
  } 

但是,R给我以下错误消息:

## Warning in if (x1 < 0.05 | x2 < 0.1 | x3 < 0.05) {: the condition has length > 1 and only the first element will be used

R为什么会给我一条错误消息?如果有问题,该如何在不使用两个if语句的情况下解决呢?

2 个答案:

答案 0 :(得分:1)

您可能正在寻找ifelse()函数

set.seed(1)
x1 <- runif(1000, 0,1)
x2 <- runif(1000, 0,1)
x3 <- runif(1000, 0,1)

y1 <- ifelse(x1 <0.05 | x2 < 0.1 | x3 <0.05, 1, NA)
y1[1:20]
[1] NA NA NA NA NA  1 NA NA NA NA  1 NA  1 NA  1 NA NA  1 NA NA

答案 1 :(得分:0)

Y1 <- as.numeric(x1 <0.05 | x2 < 0.1 | x3 <0.05)

如果as.numeric1括起来,则返回TRUE,如果0则返回FALSE