R 求和的行为!is.na()结果

R 求和的行为!is.na()结果,r,logical-operators,na,operator-precedence,R,Logical Operators,Na,Operator Precedence,为什么第一行返回TRUE,第三行返回1?我希望两行都返回1。第三行中那两个括号的确切含义是什么 !is.na(5) + !is.na(NA) # TRUE (!is.na(5)) + (!is.na(NA)) # 1 编辑:应该多次检查这些。最初的问题是!is.na()。但它没有:) 您的第一个代码相当于 !(is.na(5) + !is.na(NA)) 也就是说,的优先级低于+。。。没有确定。。。我原来的问题是与!is.na()。现在试试:)这同样适用于!真的+!FALSE和(!TRUE)

为什么第一行返回TRUE,第三行返回1?我希望两行都返回1。第三行中那两个括号的确切含义是什么

!is.na(5) + !is.na(NA)
# TRUE
(!is.na(5)) + (!is.na(NA))
# 1
编辑:应该多次检查这些。最初的问题是
!is.na()。但它没有:)

您的第一个代码相当于

!(is.na(5) + !is.na(NA))

也就是说,
的优先级低于
+

。。。没有确定。。。我原来的问题是与!is.na()。现在试试:)这同样适用于
!真的+!FALSE
(!TRUE)+(!FALSE)
。也就是说,这与
is.na
@Xachriel无关,因为您在这里相对较新,您可能需要阅读和了解其工作原理。如果您收到解决问题的答案(您有一个很好的答案!!!),您可以通过单击小复选标记或向上投票一个有用的答案来接受它,那么StackOverflow对每个人来说都更有价值。你绝对没有义务这样做,但是如果一个答案确实解决了你的问题,这是一个“回馈”网站的好方法。谢谢+1-这意味着你可以得到奇怪的结果,比如:
!真+假等于假
FALSE+!真的等于0 < /代码>这伤害了我的大脑。对于LispS:<代码>代码工具::显示树(引用(是(NA)(5)+是.NA(NA))< /代码>只是显示:不管所讨论的语言,使用一些额外的括号集合来避免歧义。多余的括号引入了视觉混乱,需要根据增加的明确性进行权衡。对于基本操作(想想BODMAS,但对于程序员来说),冗余括号对可读性有害。一个像样的编辑器将提供颜色或其他突出显示以匹配大括号。我理解可读性问题,所以我并不是建议使用大括号。还有一点:代码常常被从一种语言移植到另一种语言。每当有非标准或非直观的优先级时,括号会起到很大的作用。