让R打印包含“”,“”和转义符\的系统调用

时间:2018-08-17 20:48:53

标签: r escaping quotes

我需要在R脚本中运行perl命令。我通常会通过以下方式进行操作:

system(paste0('my command'))

但是,我要粘贴的命令包含单引号和双引号以及转义符。具体来说,我想粘贴以下命令:

perl -pe '/^>/ ? print "\n" : chomp' in.fasta | tail -n +2 > out.fasta

我尝试用更多的转义符转义双引号,这使我可以传递命令,但随后打印所有3个转义符,这会导致命令失败。是否有解决此问题的好方法,这样我可以将上面的perl行保存为R中的字符串,然后传递给system()函数?

1 个答案:

答案 0 :(得分:2)

嘿,我还没有测试过您的特定perl调用(因为它涉及特定的文件/目录等),但是通过转义引号尝试了一些琐碎的事情,它似乎可以正常工作。您可能还想参考this问题。 我的方法,

# shouldnt have any text expect for an empty string
my_text <- try(system(" perl -e 'print \"\n\"' ", intern = TRUE))
my_text

[1] ""


# should contain the string - Hello perl from R!
my_text2 <- try(system(" perl -e 'print \"Hello perl from R!\"' ", intern = TRUE))
my_text2

[1] "Hello perl from R!"

因此,根据以上试验,我认为这应该对您有用-

try(system(command = "perl -pe '/^>/ ? print \"\n\" : chomp' in.fasta | tail -n +2 > out.fasta", intern = TRUE))

注意-intern = TRUE仅将输出捕获为R中的字符向量。