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