我已将R升级到版本3.2.2.当我重新启动Rstudio时,在显示">"之前,会出现一条错误消息:
Error in tools:::httpdPort <= 0L :
comparison (4) is possible only for atomic and list types
Run Code Online (Sandbox Code Playgroud)
这是什么意思?我该怎么做才能删除此邮件?
Sur*_*rya 10
将您的RStudio版本升级到最新版本,应该适用于任何操作系统.
对于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
Run Code Online (Sandbox Code Playgroud)
现在,运行RStudio.错误消息应该消失.
我今天刚遇到同样的问题,并通过源代码搜索了解原点.原因是直到R 3.1.3,httpdPort是一个变量,而从R 3.2.0开始,它是一个函数.
发生错误,因为该行
tools:::httpdPort <= 0L
Run Code Online (Sandbox Code Playgroud)
是错的,如果httpdPort是一个功能.它应该是
tools:::httpdPort() <= 0L
Run Code Online (Sandbox Code Playgroud)
似乎RStudio在某些时候运行该行,当然,它需要知道,运行两个版本中的哪一个.这就是在R从版本<= 3.1.3更新到版本> = 3.2.0之后需要更新RStudio的原因.
它httpdPort在文件中定义src/library/tools/R/dynamicHelp.R.在R 3.1.3版中,定义为
httpdPort <- 0L
Run Code Online (Sandbox Code Playgroud)
在R版本3.2.0中,它是
httpdPort <- local({
port <- 0L
function(new) {
if(!missing(new))
port <<- new
else
port
}
})
Run Code Online (Sandbox Code Playgroud)
因此,解决问题的方法是将R版本降级为<= 3.1.3 或升级RStudio.