【问题标题】:Does R have "negative zero"?R有“负零”吗?
【发布时间】:2021-02-26 10:22:05
【问题描述】:

我的控制台告诉我-0 返回0,c(1:5)[0] 和c(1:5)[-0] 返回integer(0)。 R这是否意味着R没有“负零”的概念?

【问题讨论】:

  • 我相信问题的答案是不,R 中没有负零,但看看this SO post 是否有帮助。
  • @PKumar 看起来足够了。做得更好的唯一方法是在文档中找到用简单的英语说你是对的。
  • 也相关,参见?.Machine 和this other SO post。
  • @PKumar 这应该是一个答案。发布它。
  • 为什么 R 会有它?

标签: r integer zero negative-zero


【解决方案1】:

虽然 R 很好地隐藏了它,但实际上 R 确实有一个负零:

# R says these are the same

0 == -0
## [1] TRUE

identical(0, -0)
## [1] TRUE

# but they are not

is.neg0 <- function(x) x == 0 && sign(1/x) == -1

is.neg0(0)
## [1] FALSE

is.neg0(-0)
## [1] TRUE

【讨论】:

  • 谢谢你,让我大吃一惊,我将删除我的答案。我确信它们是相同的。
  • 我认为这有点误导。不是 R 有负零,而是 C 有负零。请参阅help("Arithmetic") 中的“实施限制”部分。 R 语言定义没有描述负零。我无权访问“蓝皮书”来检查那里是否提到了负零。
  • 堆栈的哪一部分执行此操作并不是真正的关键点。重要的是使用 R 时的结果。这当然不会误导。
【解决方案2】:

R 中的索引从 1 开始,允许索引 0,但表示一个空向量 (R Language Definition)。负号表示“给我列表中的所有元素,但我在索引中指定的元素”,即c(1:5)[-2] 返回[1] 1 3 4 5。在您的情况下,索引 0 和 -0 之间没有区别,它们代表相同的行为。

【讨论】:

  • "在您的情况下,索引 0 和 -0 之间没有区别"。这似乎是回答问题的一种倒退方式。我在问0 和-0 之间是否有任何区别。它们如何充当索引与真正的问题无关。
  • 好吧,如果 0 索引返回一个空向量,而负索引返回除正索引返回的元素之外的所有元素,那么预期的结果应该是什么?一个无限向量?
  • 再一次,你说的是索引 0。我说的是数字 0 和数字 -0。
  • 你说的是结果吗? integer(0) 不代表数字零,而是一个包含 0 个元素的整数向量。对不起,如果我误解了你的问题
  • 问题是“R有没有”负0“?”;我在问R是否区分-1*0和0。索引是相关的,但不是答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-26
  • 2012-08-24
  • 1970-01-01
  • 2020-04-04
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
相关资源
最近更新 更多