r - 如何使用引号运行系统命令
问题描述
我有一个像这样运行的 bash 命令:
esearch -db protein -query "AVA17449.1" | elink -target nuccore | efetch -format ft
但我想像这样在 R 中这样做(这不起作用)
output <- system("esearch -db protein -query "AVA17449.1" | elink -target nuccore | efetch -format ft")
在 R 中调用这个命令的正确方法是什么?
PS esearch 可以使用以下命令安装
cd ~
/bin/bash
perl -MNet::FTP -e \
'$ftp = new Net::FTP("ftp.ncbi.nlm.nih.gov", Passive => 1);
$ftp->login; $ftp->binary;
$ftp->get("/entrez/entrezdirect/edirect.tar.gz");'
gunzip -c edirect.tar.gz | tar xf -
rm edirect.tar.gz
builtin exit
export PATH=$PATH:$HOME/edirect >& /dev/null || setenv PATH "${PATH}:$HOME/edirect"
./edirect/setup.sh
解决方案
要么使用单引号:
cmd <- paste(c('esearch -db protein -query "AVA17449.1"',
'elink -target nuccore',
'efetch -format ft'),
collapse=" | ")
(这些paste(...,collapse=...)
东西不是必需的,但可能会使您的代码更具可读性......)
或用反斜杠保护双引号:... -query \"AVA17449.\" ...
单引号可能更具可读性,但反斜杠可以在更复杂的情况下工作,您需要在字符串中使用两种引号......
推荐阅读
- kubernetes - 在 kubernetes 上部署到特定的后端 URL
- django - 如何根据在模型级别定义的枚举字段在 Django Modelform 中呈现单选按钮选择?
- ansible - 如何使用模板覆盖ansible中的文件?
- mysql - 检索用户表中的最后一个条目
- java - 导入类 Java
- mysql - 如果超出 SQL Server 中指定的长度大小,则将逗号分隔的单行变为多行
- logback - Logback MDC 似乎不适用于自定义类加载器
- r - 使用summary计算后如何找到百分比
- javascript - 如何在javascript中移动数组内的值
- excel - 使用 VBA 中的公式在输出中出错