Así que tengo este programa samtools que quiero usar desde la línea de cmd, convirtiendo un archivo en otro. Funciona así:Ejecutar un script bash desde un script R
bash-4.2$ samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > filename.fasta
Como yo quiero para automatizar esto, me gustaría automatizar mediante el uso de una secuencia de comandos R. Sé que puede utilizar el sistema() para ejecutar un comando del sistema operativo, pero no puedo conseguir que funcione al tratar
system(samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > filename.fasta)
¿Es sólo una cuestión de usar expresiones regulares para deshacerse de los espacios y cosas así que la coma nd argumento sistema (comando) es legible? ¿Cómo hago esto?
EDIT:
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: Y el ganador es:
system("samtools view filename.bam | awk '{OFS=\"\\t\"; print \">\"$1\"\\n\"$10}' -> filename.fasta")
'sistema()' toma una cadena de caracteres como argumento, por lo que Necesito envolver tu argumento entre comillas. – Andrie
Ya lo había intentado. Se muestra como editar arriba. – cianius
try system ("samtools view filename.bam | awk '{OFS = \" \ t \ "; print \"> \ "$ 1 \" \ n \ "$ 10}' -> filename.fasta") Necesitas escapar las comillas dobles, para que R lea todo el comando, en lugar de solo la parte del comando entre las dos primeras comillas dobles –