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


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

我能做的是保存所需的变量 saveRDS,并将它们加载到服务器上 loadRDS,在服务器上执行命令,然后保存结果并在Windows上加载它们。

但这一切都非常具有互动性和手动性,很难定期完成。

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

  1. 通过例如与服务器连接SSH,
  2. 传输所需的对象(可以手动指定)
  3. 在服务器上执行给定代码并等待结果
  4. 得到结果。

我可以远程运行整个R,但随后它会产生与网络相关的问题。我在Excel中执行的大多数R命令都非常快且数据量很大。我只需要远程执行一些特定的命令,而不是所有命令。


6123
2018-02-27 09:49


起源

您可以直接从R调用shell命令 system,这样您就可以轻松地将当前在控制台输入的命令写入R脚本。 - Thomas
其中一个选项是安装Rstudio服务器并从那里开始工作。 - Roman Luštrik
不可以.AFAIK RExcel不支持远程连接,即使这样做,如果我开始通过网络传输所有数据也不会有效。我只需要远程执行特定的命令。 - Adam Ryczkowski


答案:


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

请记住,Rserve可以接受来自R客户端的连接,例如,请参阅 如何使用R客户端连接到Rserve

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


2
2017-08-13 17:45





这是我的设置。

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

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

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


5
2017-11-17 13:21



这正是我的工作。太糟糕了,R没有内置的客户端/服务器功能。 - Adam Ryczkowski


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

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

你可以用R's system 用必要的选项运行scp和ssh的命令。

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


3
2018-02-27 15:34



如何在远程计算机上设置群集? - Simon Shine