Стоп R, вызывающий XQuartz - PullRequest
1 голос
/ 20 мая 2019

Я нахожусь на macOS и использую R от терминала. R часто запускает XQuartz, например, с install.packages("digest"):

> install.packages("digest")
Installing package into ‘~/Library/R/3.5/library’
(as ‘lib’ is unspecified)
--- Please select a CRAN mirror for use in this session ---

и открывается окно XQuartz с Secure CRAN mirrors.

Другой пример, когда доступен более новый пакет, и открывается окно XQuartz с

These packages have more recent versions available. Which would you like to update?
digest (0.6.18 -> 0.6.19) [CRAN]

Как заставить R задать вопрос из терминала вместо открытия XQuartz?

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Это потому, что XQuartz требуется для MacOSX.В R MacOSX FAQ :

Устройство quartz () является родным графическим устройством в R для Mac OS X. ... Устройство quartz () можно использовать из R.APP или подходящая сборка R, запущенная на консоли Mac.Где поддерживается, это графическое устройство по умолчанию.... Кварцевое устройство допускает взаимодействие.

При установке пакетов можно установить один репозиторий CRAN:

install.packages("digest", repos = "https://cran.r-project.org")

Вы также можете определить свой репозиторий CRAN в началевашего кода с options:

options(repos = structure(c(CRAN = "your_cran_mirror")))

Вот список CRAN mirros , где вы можете выбрать тот, который лучше всего подходит для вашего случая.

Вы также можетеустановите эти настройки для всего сайта на Rprofile.site, который в macOS имеет значение /Library/Frameworks/R.framework/Resources/etc/Rprofile.site, с помощью:

local({r <- getOption("repos")
       r["CRAN"] <- "http://cran.r-project.org"
       options(repos=r)})

PS: позже скопированный с этого поста .

0 голосов
/ 19 июня 2019

Хотя XQuartz является родным графическим устройством для R на Mac, на самом деле все еще можно контролировать, где эти меню отображаются напрямую.Добавив одну строку к вашему .Rprofile, вы можете заставить R задать вопрос прямо в консоли, как вы спрашиваете:

options("menu.graphics" = FALSE)

Что действительно происходит, так это то, что функция install.packages на самом деле вызывает utils::menu, который отображает меню выбора для пользователя.Функция menu сама работает в двух режимах: если ее аргумент graphics равен TRUE, то она пытается отобразить меню на графическом устройстве по умолчанию - в данном случае, в окне XQuartz - и в противном случае будетотобразить текстовое меню в консоли.Это поведение контролируется глобальной опцией menu.graphics.

...