2014-02-27 202 views
10

我在一臺相當慢的桌面上的Windows上使用Excel + R。我有一個完全的管理員訪問非常快速的基於Ubuntu的服務器。我想知道:如何遠程執行服務器上的命令?如何在遠程服務器上輕鬆執行R命令?

我可以做的是將所需的變量保存在saveRDS中,並將它們加載到服務器上,使用loadRDS,在服務器上執行命令,然後保存結果並將它們加載到Windows上。

但它都是非常互動和手動的,很難定期完成。

有沒有辦法直接來自R做的東西,像

  1. 連接通過例如服務器SSH,
  2. 轉移所需要的對象(其可以手動指定)
  3. ,可執行給出在服務器上的代碼和等待結果
  4. 獲取的結果。

我可以遠程運行整個R,但它會產生一個網絡相關的問題。我在Excel中執行的大多數R命令都非常快速且數據量很大。我只需要遠程執行一些特定的命令,而不是全部。

+0

您可以使用'system'直接從R調用shell命令,以便您可以輕鬆地將當前在控制檯輸入的命令寫入R腳本。 – Thomas

+4

其中一個選項是安裝Rstudio服務器並從那裏開始工作。 –

+0

編號AFAIK RExcel不能用於遠程連接,即使這樣做,如果我開始通過網絡傳輸所有數據,效率也不高。我只需要遠程執行特定的命令。 –

回答

2

有幾個選項,最簡單的是交換安全密鑰,以避免手動輸入SSH/SCP密碼。在此之後,你可以寫一個簡易R腳本,該腳本將:

  1. 保存必要的變量爲一個數據文件,
  2. 使用scp將數據文件上傳到Ubuntu的服務器
  3. 使用ssh運行遠程腳本將處理剛剛上傳的數據並將結果存儲在另一個數據文件中
  4. 再次使用scp命令將結果傳回工作站。

您可以使用R的system命令運行帶有必要選項的scp和ssh。

另一個選項是在遠程機器上設置集羣工作者,然後可以使用clusterExport導出數據並使用clusterEvalQ和clusterApply評估表達式。

+0

如何在遠程機器上設置羣集? –

5

這是我的設置。

  1. 使用scp複製您的代碼和數據。 (我使用github,所以我從github克隆我的代碼,這有利於確保我的工作是可重複的)

  2. (可選)使用sshfs在本地計算機上安裝遠程文件夾。這使您可以使用本地文本編輯器而不是ssh命令行來編輯遠程文件。

  3. 把你想運行的所有東西放在一個R腳本中(在遠程服務器上),然後在R批處理模式下通過ssh運行它。

+0

這正是我所做的。太糟糕了,R沒有內置一些客戶端/服務器功能。 –

相關問題