使用系统_a lot _

时间:2019-04-19 14:20:21

标签: r perl

我有一些奥秘的perl代码,用于计算两个字符串之间的距离。 我有创建和对齐字符串等的R代码。我需要从R数万次调用Perl代码。我使用system()

似乎每次我从R调用system('perl ...')时,R都会打开一个新的外壳。我无法弄清楚如何使R简单地将所有命令发送到同一shell或在打开外壳并运行system调用后立即关闭外壳。最终,我收到一条too many open files消息,一切都崩溃了。

这是一个简单的示例,其中包含理论上的Hello World脚本:

for (i in seq_along(1:10000)){
  system('perl hello.pl')
}
  • showConnections(all = T)运行一次system(perl...)后没有显示打开的额外连接。
  • system2根本不起作用(尽管我不确定是否会有所帮助)。

我正在使用macOS v10.13.2,R v3.5.2,Rstudio v1.1.456。

如何使R不会耗尽空间并运行对Perl的所有调用? (这可能甚至不是要问的确切问题。)

1 个答案:

答案 0 :(得分:1)

按照Dirk Eddelbuettel的建议,我将所有可能的参数对都写到了一个兆行的txt文件中,并使用bash脚本来遍历txt文件并在每行上运行perl脚本。由于参数是字符串,因此这是一种可行的解决方案。最后它确实起作用。