【发布时间】:2014-02-23 09:02:42
【问题描述】:
我是编程新手,主要是我能够在 R 中编写一些脚本,但对于我的工作,我需要调用一个外部程序。为了让这个程序在 ubuntu 的终端上运行,我必须先使用 setenv 然后执行程序。谷歌搜索我找到了 system() 和 Sys.setenv() 函数,但不幸的是我可以让它起作用。
这是在 ubuntu 终端中运行的代码:
$ export PATH=/home/meme/bin:$PATH
$ mast "/home/meme/meme.txt" "/home/meme/seqs.txt" -o "/home/meme/output" -comp
其中前两个参数是输入文件,-o 参数是输出目录,-comp 是程序运行的另一个参数。
尽管它已经在终端中工作,但我需要在 R 中执行它的原因是因为我需要使用 1000 个不同的文件运行程序 1000 次,所以我想创建一个 for 循环,其中输入名称在每个循环中都会更改然后分析 R 中的每个输出。
我已经尝试过使用:
Sys.setenv(PATH="/home/meme/bin"); system(mast "/home/meme/meme.txt" "/home/meme/seqs.txt" -o "/home/meme/output" -comp )
和
system(Sys.setenv(PATH="/home/meme/bin") && mast "/home/meme/meme.txt" "/home/meme/seqs.txt" -o "/home/meme/output" -comp )
但总是收到:
Error: unexpected constant string in "system(mast "/home/meme/meme.txt""
或
Error: unexpected symbol in "system(Sys.setenv(PATH="/home/meme/bin") && mast "/home/meme/meme.txt""
在这一点上,我已经没有想法来完成这项工作。如果这个问题已经得到解答,那么我的谷歌搜索很差,我会很感激任何指向它的回复的链接。
非常感谢您的宝贵时间。
卡洛斯
其他细节:
我使用的是 Ubuntu 12.04 64 位版本,RStudio 版本 0.97.551,R 版本 3.0.2 (2013-09-25) -- “飞盘帆船” 平台:x86_64-pc-linux-gnu (64-bit) . 我使用的程序 (MAST) 在字母列表中找到一个序列模式,它是在 http://meme.nbcr.net/meme/doc/meme-install.html 中找到的 MEME SUIT 版本 4.9.1 的一部分,并通过命令行运行。 mast的命令行用法是:
mast <motif file> <sequence file> [options]
【问题讨论】:
标签: r shell command-line external-process