Запустите bash-скрипт из R-скрипта

Итак, у меня есть программа samtools, которую я хочу использовать из строки cmd, конвертируя один файл в другой. Это работает так:

bash-4.2$ samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > filename.fasta

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

system(samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > filename.fasta)

Это просто вопрос использования регулярных выражений, чтобы избавиться от пробелов и прочего, чтобы система аргументов (команда) с аргументами была читабельна? Как мне это сделать?

РЕДАКТИРОВАТЬ:

system("samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > first_batch_1.fasta") Error: unexpected input in "system("samtools view filename.bam | awk '{OFS="\"

EDIT2:

system("samtools view filename.bam | awk '{OFS=\"\t\"; print \">\"$1\"\n\"$10}' - > filename.fasta")

awk: cmd. line:1: {OFS="    "; print ">"$1"
awk: cmd. line:1:                         ^ unterminated string
awk: cmd. line:1: {OFS="    "; print ">"$1"
awk: cmd. line:1:                         ^ syntax error
> 

EDIT3: И победитель:

system("samtools view filename.bam | awk '{OFS=\"\\t\"; print \">\"$1\"\\n\"$10}' -> filename.fasta")
 cianius09 июл. 2012 г., 14:54
EDIT2: показывает, что ваше предложение не работает. Выход из всех кавычек в регулярном выражении awk заставляет его работать неправильно.
 Andrie09 июл. 2012 г., 14:43
system() принимает символьную строку в качестве аргумента, поэтому вам нужно заключить аргумент в кавычки.
 Mischa Vreeburg09 июл. 2012 г., 14:50
попробуйте system ("samtools view filename.bam | awk" {OFS = \ & quot; \ t \ & quot ;; print \ & quot; & gt; \ "quot; $ 1 \" quot; \ n \ "quot; $ 10} & amp; $ & gt; - & gt ; filename.fasta & quot;) Вам нужно экранировать двойные кавычки, чтобы R мог прочитать всю команду, а не только часть команды между первыми двумя двойными кавычками
 plannapus09 июл. 2012 г., 14:57
Не могли бы вы также избежать обратной косой черты?system("samtools view filename.bam | awk '{OFS=\"\\t\"; print \">\"$1\"\\n\"$10}' -> filename.fasta")
 cianius09 июл. 2012 г., 14:47
Я уже пробовал это. Показано как редактировать выше.

Ответы на вопрос(1)

Решение Вопроса

cat проверить, правильно ли экранирована строка символов. Так:

Create an object x with your string Carefully escape all the special characters, in this case quotes and backslashes Use cat(x) to inspect the resulting string.

Например:

x <- 'samtools view filename.bam | awk \'{OFS="\\t"; print ">"$1"\\n"$10}\' - > filename.fasta'

cat(x)
samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > filename.fasta

Если это дает правильную строку, то вы должны быть в состоянии использовать

system(x)
 cianius09 июл. 2012 г., 15:15
Да, мне нужно научиться отлаживать это самостоятельно. Спасибо, Андри!
 25 февр. 2017 г., 10:28
@ Андрей, у меня есть сценарий bash в безопасности"c:/test" папка с именемtest.sh , Я хочу назвать этот скрипт в коде r. Я пытаюсь этоsystem команда, но получая ошибку, дорогая, вы мне поможете?

Ваш ответ на вопрос