2014-01-12 32 views
2

RStudio服务器使用无头R会话,似乎通过了所有编码的I/O操作以节省带宽。这适用于除了像Rattle或Latticist这些通过自己的GUI工作的软件包以外的所有应用程序。有没有办法通过RStudio服务器使用这些软件包,或者访问RStudio服务器R会话来远程运行这些软件包?从RStudio服务器运行GUI分析软件包

如果有一种有效的方式可以远程运行这些软件包,而无需通过SSH转发X会话,就会带来好处。

回答

2

由于这些图形程序的工作方式,我不确定这是通过RStudio接口可能的。 RStudio很容易为R捕获文本输入和输出。捕获正常的图形输出非常令人印象深刻,但这在R中“原生”完成。即使像ggplot2lattice这样的包使用内置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转发做图形命令:

  1. 难道不涉及外部图形界面的一切。
  2. 在项目目录中将您的R Session(在环境选项卡或通过命令行)保存为.RData。 (其他地方可以这样做,但如果您的工作空间保存在工作目录中,通常会更方便。)
  3. 通过SSH和X转发和cd登录到项目目录。
  4. 启动R-R将自动加载保存为.RData的任何现有工作空间。 (您可以使用--vanilla来禁用此行为,具体取决于您的工作空间的大小,R可能需要几秒到几分钟的时间才能加载
  5. 与拨浪鼓,Latticist,RCommander,RGL等玩得开心!如果你是通过互联网而不是本地网络来做这件事(见上面)
+0

是的,我知道RStudio是如此之快,因为它通过事件处理与R的交互。会为类似Rattle的GTK应用程序提供类似的事件处理程序。 –

相关问题