有没有一种使用emacs安装R包的方法?

7

我正在使用ESS,但每次需要安装新软件包时,我都必须使用R gui。难道没有一种方法可以在不离开emacs的情况下完成吗?


1
为什么不能使用 install.packages 函数? - Joshua Ulrich
R 进程在提示选择镜像时挂起。 - user443854
2
所以在你的~/.R/文件中设置一个镜像。或作为install.packages的一个参数。看起来像是PBKAC。 - Dirk Eddelbuettel
1
我怀疑你的R没有tcltk。 R无法弹出cran chooser并尝试从键盘获取输入。 capabilities()告诉你什么? - Spacedman
3
不需要通过针对他人工作的评论来表现粗鲁不礼貌。 - Gavin Simpson
4个回答

9

来自 help(Startup)

 ## Example of Rprofile.site
 local({
   # add MASS to the default packages, set a CRAN mirror
   old <- getOption("defaultPackages"); r <- getOption("repos")
   r["CRAN"] <- "http://my.local.cran"
   options(defaultPackages = c(old, "MASS"), repos = r)
   ## (for Unix terminal users) set the width from COLUMNS if set
   cols <- Sys.getenv("COLUMNS")
   if(nzchar(cols)) options(width = as.integer(cols))
 })

8

C-c C-e i

这个快捷键可以将当前buffer导出为i格式的org文件。

加载所有包需要几秒钟时间。


2
如果您不记得软件包设置的快捷方式,可以通过便捷命令主菜单进行操作。
如果您在下方 R 缓冲区中以,作为第一个字符(即在进程标记处)输入,将会在迷你缓冲区中触发便捷命令菜单,如下图所示:

install-pack

注意,你可以通过键入初始字符(就像在Emacs isearch中一样)交互式地选择菜单项。当然,你也可以简单地使用箭头。
选择install.packages(键入i后跟enter应该足够了)。
在随后的菜单中,你会看到CRAN镜像列表:

CRAN mirror list

选择一个方便的镜像。ESS 将获取可用的软件包。

Fetch the available packages

然后,您会看到可安装软件包的列表。

installable packages

选择您需要的选项,然后完成即可。
请注意,在当前会话中第二次安装软件包时,不需要重新选择镜像。
如果您不熟悉 ESS 便捷命令,您可能会发现这里还有许多其他非常方便的命令。特别是关于这里的主题,library 命令可能会有所帮助,因为您可以享受自动补全,在需要加载软件包但不记得其拼写时也很有用。
您可能想要从 Emacs 使用标准的 R GUI 对话框。在这种情况下,至少在 Windows 中,要正常显示对话框,请使用:
library('tcltk')
install.packages()

2

谢谢你提供关于“anything”的指针,Emacs Wiki 的条目很有趣。又有一个新模式可以尝试了… - Dirk Eddelbuettel
谢谢,我使用任何东西,但不知道anything-R。那么一旦安装完成,我应该使用哪个命令?我尝试了一些显而易见的选择,比如“安装包”,但没有看到任何有希望的结果。 - user443854
1
@user443854 你需要定义一个函数,然后像这样调用它: (defun orp-R-anything () (interactive) (anything-other-buffer '( anything-c-source-R-local anything-c-source-R-help ;; anything-c-source-R-localpkg ;; anything-c-source-R-repospkg ) " R-anything")) ' - Otto Pichlhoefer
嗯,那不可能是“真正”的答案(@Otto),因为anything-R.el文件明确包含了install.packages()功能。 - Martin Mächler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接