1

我在 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?

4

2 回答 2

2

尽管XQuartz是 Mac 上的原生图形设备R,但实际上仍然可以控制这些菜单的直接显示位置。通过在 your 中添加一行.Rprofile,您可以强制R直接在控制台中提问,正如您所问的:

options("menu.graphics" = FALSE)

真正发生的是该函数install.packages实际上正在调用utils::menu,它向用户显示一个选择菜单。该函数menu本身以两种模式运行:如果它的graphics参数是TRUE,那么它会尝试在默认图形设备中显示菜单——在这种情况下,是一个 XQuartz 窗口——否则将在控制台中显示一个文本菜单。此行为由全局选项控制menu.graphics

于 2019-06-19T06:00:18.497 回答
1

那是因为 MacOSX 需要 XQuartz。在R MacOSX 常见问题解答中:

quartz() 设备是 Mac OS X 的 R 中的本机图形设备。 ...quartz() 设备可以从 R.APP 或在 Mac 控制台上运行的合适的 R 构建中使用。在支持的情况下,它是默认的图形设备。... 石英设备允许交互。

安装软件包时可以设置您的 CRAN 存储库:

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

您还可以在代码开头定义您的 CRAN 存储库options

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

这是CRAN 镜子列表,您可以从中选择最适合您的情况的镜子。

您还可以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:后来从这个帖子复制的。

于 2019-05-21T07:16:00.010 回答