与在云中运行的 R 会话进行交互的最佳方式

机器算法验证 r
2022-03-26 05:51:30

我使用修改版的bioconductor AMI在 amazon EC2 上运行R。目前,我正在使用 putty 连接到我的服务器,从命令行启动 R,然后将我的脚本从 notepad++ 复制并粘贴到我的 putty 会话中。

问题是,我讨厌剪切和粘贴。感觉像是石器时代,我偶尔会遇到奇怪的缓冲问题,这些问题会搞砸我的代码。我不能使用RStudio,因为它不支持我非常依赖的multicore 。

更优雅的方法是什么?

/编辑:感谢所有伟大的建议。现在,我已经切换到使用带有 doRedis 后端的 foreach,它在我的 Mac、我的 PC 和通过 RStudio 的亚马逊上运行良好。一旦我学会了如何使用“foreach”编写一个模拟“lapply”的函数,这个切换就非常容易了。(另外,doRedis 很棒!)

4个回答

最方便的方法就是安装 VNC 服务器和一些像 XFCE 这样的轻环境,并让自己成为一个虚拟会话,你可以从任何你想要的地方使用它(它会持续断开连接),即像这样: 在此处输入图像描述

其他好处是您可以在虚拟桌面中使用本地剪贴板,并且比通过 X11 转发或复制图像文件更快地查看 R 绘图。

正确设置所有内容(X init、ssh 隧道)需要一些努力,但互联网上到处都是如何设置的教程。

我能想到几个方法。我已经做了很多,以下是我发现最有用的方法:

  1. Emacs 守护进程模式使用 -X 开关 ssh 进入 EC2 实例,以便它将 X 窗口转发回您的删除机器。使用守护程序模式将确保您在连接超时或断开时不会丢失状态
  2. 不要使用 multicore 包,而是使用带有 foreach 包的不同并行后端。这样你就可以使用 RStudio,这太棒了。Foreach 很棒,因为您可以以非并行方式测试代码,然后通过简单地更改后端(1 或 2 行代码)切换到并行模式。我推荐 doRedis 后端。你在云端,还不如启动多台机器!

我不知道 Amazon EC2 是如何工作的,所以我的简单解决方案可能不起作用。但我通常使用 scp 或 sftp(如果我在 Windows 上,则通过 WinSCP)或 git。

我会使用 rsync 将脚本和数据文件推送到服务器,然后使用“nohup Rscript myscript.R > output.out &”来运行,完成后,使用 rsync 来提取结果。