【问题标题】:Rstudio and R terminal give different outputsRstudio 和 R 终端给出不同的输出
【发布时间】:2014-12-02 20:13:35
【问题描述】:

在 Rstudio(使用 R 3.1.1)中,当我运行它时,

length(unique(sort(c(outer(2:100,2:100,"^")))))
# 9220 

在 R 3.1.1 中,当我运行它时,

length(unique(sort(c(outer(2:100,2:100,"^")))))
# 9183

(正确的输出是9183)

我不知道为什么...非常感谢您的帮助

【问题讨论】:

  • 你能从两者中发布sessionInfo() 来确认版本/构建吗?
  • 我认为这是 32 位和 64 位版本之间的区别。您在 Rstudio 上运行 64,在常规 R 上运行 32。在 Rstudio 中转到工具 -> 全局选项 -> R 版本 -> 更改 -> 更改为 3.1.1 的 32 位版本并再次运行您的代码
  • 我在 RStudio 和 R 终端的 R 3.1.2(64 位)中运行它时得到 9220,当我在 32 位中运行它时得到 9183... 确认 @DavidArenburg 的建议
  • 我猜答案是 here 在教授 Ripley 答案中的某处

标签: r unique rstudio


【解决方案1】:

正如 David Arenburg 所说,这是 32 位和 64 位 R 版本之间的区别,至少在 Windows 机器上是这样。据推测,涉及某种舍入误差。有趣的是,是 32 位 R 得到了正确的答案,而 64 位 R 发现了太多唯一数字。

首先要确认9183 确实是正确答案,我使用了gmp 包(C 多精度算术库GMP 的包装器),它提供了不受舍入误差影响的结果:

library(gmp)
x <- as.bigz(2:100)
length(unique(do.call(c, sapply(x, function(X) x^X))))
[1] 9183

这是我的 32 位 R 的结果:

length(unique(sort(c(outer(2:100,2:100,"^")))))
# [1] 9183
R.version[1:7]               _                           
# platform       i386-w64-mingw32            
# arch           i386                        
# os             mingw32                     
# system         i386, mingw32               
# status                                     
# major          3                           
# minor          1.2                         

这是我的 64 位 R 的结果:

length(unique(sort(c(outer(2:100,2:100,"^")))))
# [1] 9220
R.version[1:7]
# platform       x86_64-w64-mingw32          
# arch           x86_64                      
# os             mingw32                     
# system         x86_64, mingw32             
# status                                     
# major          3                           
# minor          1.2                         

【讨论】:

  • 大多数人使用 32 位版本的 R 是出于这样的原因吗?+
  • @nathanesau -- 不。看到版本之间的任何差异真的很少见(这可能是您的问题获得如此多选票的原因)。在这种舍入误差有可能严重影响结果的领域中,人们(应该)使用支持更高精度计算的附加包。
猜你喜欢
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多