Вызов Perl из R с использованием системы _a lot_ - PullRequest
1 голос
/ 19 апреля 2019

У меня есть некоторый загадочный Perl-код, который вычисляет расстояние между двумя строками.У меня есть R-код, который создает и выравнивает строки и т. Д. Мне нужно вызывать Perl-код из R десятки тысяч раз.Я использую system().

Похоже, каждый раз, когда я звоню system('perl ...') из R, R открывает новую оболочку.Я не могу понять, как заставить R просто отправить все команды в одну и ту же оболочку или закрыть оболочку сразу после ее открытия и запуска вызова 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 Ответ

1 голос
/ 19 апреля 2019

Следуя предложению Дирк Эддельбюттель Я записал все возможные пары аргументов в текстовый файл с базилией строк и использовал bash-скрипт для прохождения через txt-файл и запускал perl-скрипт в каждой строке. , Поскольку аргументы являются строками, это возможное решение здесь. В конце концов, это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...