Что означает "Ошибка в инструментах: httpdPort <= 0L:...." в Rstudio?

Я обновил R до версии 3.2.2. Когда я перезапускаю Rstudio, перед отображением " > " появляется сообщение об ошибке:

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

Что это значит? Что нужно сделать, чтобы удалить это сообщение?

Ответ 1

Обновите свою версию 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

Теперь запустите RStudio. Сообщение об ошибке должно исчезнуть.

Ответ 2

Я только что столкнулся с той же проблемой сегодня и просмотрел исходный код, чтобы понять происхождение. Причина в том, что до R 3.1.3, httpdPort была переменной, а с R 3.2.0 - это функция.

Ошибка возникает, поскольку строка

tools:::httpdPort <= 0L

неверно, если httpdPort является функцией. Это должно быть

tools:::httpdPort() <= 0L

Кажется, что RStudio запускает эту строку в какой-то момент и, конечно же, ей нужно знать, какую из двух версий запускать. Вот почему RStudio необходимо обновить после обновления R от версии <= 3.1.3 до версии >= 3.2.0.

httpdPort определяется в файле src/library/tools/R/dynamicHelp.R. В R 3.1.3 определение читает

httpdPort <- 0L

в то время как в версии 3.2.0 R это

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

Таким образом, решение проблемы заключается в том, чтобы либо понизить вашу версию R до <= 3.1.3 , либо для обновления RStudio.