如何在远程服务器上轻松执行R命令?

时间:2014-02-27 09:49:13

标签: r remote-access

我在Windows上使用Excel + R在一个相当慢的桌面上。我有一个完全的管理员访问非常快速的基于Ubuntu的服务器。我想知道:如何在服务器上远程执行命令?

我可以做的是使用saveRDS保存所需的变量,并使用loadRDS将它们加载到服务器上,在服务器上执行命令,然后保存结果并将其加载到Windows上。< / p>

但它非常具有互动性和手动性,很难定期完成。

有没有办法直接从R做这些东西,比如

  1. 通过以下方式与服务器连接SSH,
  2. 传输所需的对象(可以手动指定)
  3. 在服务器上执行给定代码并等待结果
  4. 获得结果。
  5. 我可以远程运行整个R,但随后它会产生与网络相关的问题。我在Excel中执行的大多数R命令都非常快且数据量很大。我只需要远程执行一些特定的命令,而不是所有命令。

3 个答案:

答案 0 :(得分:5)

这是我的设置。

  1. 使用scp复制代码和数据。 (我使用github,所以我从github克隆我的代码。这有利于确保我的工作可以重现)

  2. (可选)使用sshfs在本地计算机上安装远程文件夹。这允许您使用本地文本编辑器而不是ssh命令行编辑远程文件。

  3. 将您要运行的所有内容放在R脚本中(在远程服务器上),然后在R批处理模式下通过ssh运行它。

答案 1 :(得分:3)

有几个选项,最简单的是交换安全密钥以避免一直手动输入SSH / SCP密码。在此之后,您可以编写一个简单的R脚本:

  1. 将必要的变量保存到数据文件中
  2. 使用scp将数据文件上传到ubuntu服务器
  3. 使用ssh运行远程脚本,该脚本将处理数据(您刚刚上传的数据)并将结果存储在另一个数据文件中
  4. 再次使用scp命令将结果传回工作站。
  5. 您可以使用R的system命令运行带有必要选项的scp和ssh。

    另一个选项是在远程计算机上设置集群工作程序,然后您可以使用clusterExport导出数据并使用clusterEvalQ和clusterApply计算表达式。

答案 2 :(得分:2)

还有一些选择: 1)您可以使用Rserve直接从R完成这些操作。请参阅:https://rforge.net/

请记住,Rserve可以接受来自R客户端的连接,例如参见how to connect to Rserve with an R client

2)您可以在Linux机器上设置群集,然后从Windows客户端使用这些群集功能。最简单的是使用Snow,https://cran.r-project.org/package=snow,也可以看到foreach和许多其他集群库。