RStudio 服务器使用无头 R 会话,并且似乎传递了所有编码的 I/O 操作以节省带宽。这适用于所有东西,除了 Rattle 或 Latticist 之类的包,它们通过自己的 GUI 工作。有没有办法通过 RStudio 服务器使用这些包或以其他方式访问 RStudio 服务器 R 会话以远程运行这些包?
如果有一种有效的方法可以远程运行这些包,而不需要通过 SSH 转发 X 会话,那将是一种奖励。
RStudio 服务器使用无头 R 会话,并且似乎传递了所有编码的 I/O 操作以节省带宽。这适用于所有东西,除了 Rattle 或 Latticist 之类的包,它们通过自己的 GUI 工作。有没有办法通过 RStudio 服务器使用这些包或以其他方式访问 RStudio 服务器 R 会话以远程运行这些包?
如果有一种有效的方法可以远程运行这些包,而不需要通过 SSH 转发 X 会话,那将是一种奖励。
由于这些图形程序的工作方式,我不确定这是否可以通过 RStudio 界面实现。RStudio 很容易为 R 捕获文本输入和输出。捕获正常的图形输出非常令人印象深刻,但这是在 R 中“本机”完成的。甚至包喜欢ggplot2
并lattice
使用内置的 R 绘图功能——它们进行一些渲染和数据处理自行将其传递给grid
然后grid
通过 R 内置函数在plot()
或print
被调用(包括在交互式会话的 REPL 中隐式调用)。RCommander、RGL 等使用外部库(Tcl/Tk、OpenGL),它们直接在操作系统服务上而不是通过 R 渲染它们的接口。R 甚至看不到这些程序的输出——它只知道 R这些服务的包装函数尚未返回。对于本地 RStudio,这不是问题,因为服务直接转发到本地显示,但对于 RStudio 服务器,没有显示!
另一个考虑:假设 R 可以捕获和转发 X,这意味着在您的浏览器中运行一个 X 服务器(在 X 中,服务器是显示器/键盘等,客户端是需要 I/O 的程序)。现代 JavaScript 有时非常惊人,但 X 是一个非常复杂的代码库,并且对延迟非常敏感。在 Internet 上运行 X比在本地网络上运行要慢得多——该协议并不是为此类事情设计的,而且大多数操作涉及太多往返。
在更实际的方面,您仍然可以通过 RStudio 完成大部分工作,并且只能通过 X 转发执行图形命令:
.RData
在您的项目目录中。(您实际上可以在其他地方执行此操作,但如果您的工作区保存在工作目录中,通常会更方便。)cd
进入项目目录。.RData
. (您可以使用 禁用此行为--vanilla
。根据工作区的大小,R 可能需要几秒钟到几分钟才能加载。