2014-01-12 33 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應用程序提供類似的事件處理程序。 –

相關問題