Rstudio中的"Error in tools:::httpdPort <= 0L : ...."是什么意思?

What does "Error in tools:::httpdPort <= 0L : ...." in Rstudio means?

我已经将 R 升级到 3.2.2 版。 当我重新启动 Rstudio 时,在显示“>”之前,有一条错误消息:

Error in tools:::httpdPort <= 0L :
        comparison (4) is possible only for atomic and list types

这是什么意思?我应该怎么做才能删除此消息?

将您的 RStudio 版本升级到最新版本,应该可以在任何 OS.

中使用

对于Linux/Ubuntu 14.04 终端用户,只需执行:

sudo apt-get remove rstudio

wget https://download1.rstudio.org/rstudio-0.99.489-amd64.deb

sudo dpkg -i rstudio-0.99.489-amd64.deb

现在,运行 RStudio。错误消息应该会消失。

今天刚好遇到同样的问题,翻了翻源码才知道来龙去脉。原因是在 R 3.1.3 之前,httpdPort 是一个变量,而从 R 3.2.0 开始,它是一个函数。

错误发生,因为行

tools:::httpdPort <= 0L

是错误的,如果 httpdPort 是一个函数。应该是

tools:::httpdPort() <= 0L

RStudio 运行 似乎在某些时候有那行,当然,它需要知道,运行 的两个版本中的哪一个。这就是为什么R从版本<=3.1.3更新到版本>=3.2.0后需要更新RStudio的原因。

httpdPort 在文件 src/library/tools/R/dynamicHelp.R 中定义。在 R 版本 3.1.3 中,定义为

httpdPort <- 0L

而在 R 版本 3.2.0 中,它是

httpdPort <- local({
    port <- 0L
    function(new) {
        if(!missing(new))
            port <<- new
        else
            port
    }
})

解决该问题的方法是将您的 R 版本降级到 <= 3.1.3 升级 RStudio。