2015-04-07 3 views
0

У меня есть скрипт на языке Perl (SFDRv166.pl, доступный здесь http://bit.ly/1DGmUTL), что я успешно запустить из командной строки с помощью:Выполнить PERL скрипт с аргументами в R

perl SFDRv166.pl -assoc input.txt -SFDR -out test 

теперь мне нужно, чтобы запустить эту программу как часть из R сценария, и попытался ее реализации следующим образом:

arg1 <- shQuote("-assoc input.txt") 
arg2 <- shQuote("-SFDR") 
arg3 <- shQuote("-out test") 

system("perl SFDRv166.pl arg1 arg2 arg3") 

Однако я получаю ERROR: cannot find ! сообщение, генерируемое я считаю, потому что аргументы не получают передаются в сценарий Perl (выход не говорит нет входного или выходного файла , и никакой вывод не создается).

Я вижу из чтения документации для system(), что аргументы с пробелами требуют специальной обработки, поэтому я попытался использовать shQuote(). Не знаете, что еще может быть неправильно с моим подходом?

+0

Используйте 'paste':' system (paste ("perl", "SFDRv166.pl", arg1, arg2, arg3)) ' – nicola

+0

Посмотрите на источник для' xls2sep' в пакете gdata. Он вызывает perl с аргументами. –

ответ

2

Попробуйте это:

arg1 <- "-assoc input.txt" 
arg2 <- "-SFDR" 
arg3 <- "-out test" 
cmd <- paste("perl", "SFDRv166.pl", arg1, arg2, arg3) 
system(cmd) 

Теперь вам не нужно shQuate.

Смежные вопросы