【问题标题】:Logical operators - short (relational) vs long (vector) forms逻辑运算符 - 短(关系)与长(向量)形式
【发布时间】:2013-03-14 16:04:06
【问题描述】:

我对在 R 中使用长短形式的逻辑运算符感到有些困惑。

如果我有以下值

A <- FALSE
B <- TRUE
X <- 3
Y <- 2

我想评估 NOT(A) OR NOT(B) AND X

给定参数我希望FALSE

这是我在R 中找到的表达式,因此它返回FALSE,正如我所料:

!A & X < Y || !B & X < Y

我可以消除重复的X &lt; Y 比较吗?

【问题讨论】:

  • ...你真的应该使用更多的括号来明确你想要做什么。
  • @Dason 是的,感谢 NPE,我现在知道了。适当的惩罚!

标签: r comparison vectorization logical-operators relational


【解决方案1】:

你的意思是:

> (!A || !B) && X < Y
[1] FALSE

?

【讨论】:

  • 啊哈。正是,谢谢。括弧。该死的,我应该知道的更好!时间一到,我就会接受。谢谢。
【解决方案2】:

短格式给你一个向量。
长格式给你一个单一的价值。 比较:

   x <- c(TRUE, TRUE, FALSE)
   y <- c(TRUE, FALSE, FALSE)


   X && Y
   X & y

   x || y
   x | y

【讨论】:

  • +1 短格式和长格式工作方式的非常好的示例,谢谢。
【解决方案3】:

另一种可能性:

!(A * B) && X < Y

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 2019-08-20
    相关资源
    最近更新 更多