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

having R print a system call that contains "", '', and escape character \

我需要从 R 脚本中 运行 一个 perl 命令。我通常会通过以下方式执行此操作:

system(paste0('my command'))

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

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

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

嘿,我没有测试您的特定 perl 调用(因为它涉及特定的 file/directory 等),但通过转义引号尝试了一些微不足道的事情,它似乎有效。您可能还想参考 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 中的字符向量。