我是编程新手,主要是我能在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
Run Code Online (Sandbox Code Playgroud)
前两个参数是输入文件,-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 )
Run Code Online (Sandbox Code Playgroud)
和
system(Sys.setenv(PATH="/home/meme/bin") && mast "/home/meme/meme.txt" "/home/meme/seqs.txt" -o "/home/meme/output" -comp )
Run Code Online (Sandbox Code Playgroud)
但总是收到:
Error: unexpected constant string in "system(mast "/home/meme/meme.txt""
Run Code Online (Sandbox Code Playgroud)
要么
Error: unexpected symbol in "system(Sys.setenv(PATH="/home/meme/bin") && mast "/home/meme/meme.txt""
Run Code Online (Sandbox Code Playgroud)
在这一点上,我已经没有想法使这项工作.如果这已经得到了回答,那么我的谷歌搜索功能一直很差,我会很感激其回复的任何链接.
非常感谢您的宝贵时间.
卡洛斯
额外细节:
我使用的是Ubuntu 12.04 64位版本,RStudio版本0.97.551,R版本3.0.2(2013-09-25) - "Frisbee Sailing"平台:x86_64-pc-linux-gnu(64位).我使用的程序(MAST)在字母列表中找到序列模式,并且是http://meme.nbcr.net/meme/doc/meme-install.html中运行的MEME SUIT版本4.9.1的一部分并运行通过命令行.mast的命令行用法是:
mast <motif file> <sequence file> [options]
Run Code Online (Sandbox Code Playgroud) 我想替换一个与给定模式不匹配的列表中的所有内容.我正在使用R版本3.1.3(2015-03-09) - "光滑的人行道"
我的示例列表是:
y <- c("D CCNA_01234 This is example 1 bis", "D CCNA_02345 This is example 2", "D CCNA_12345 This is example 3", "D CCNA_23468 This is example 4")
Run Code Online (Sandbox Code Playgroud)
我要匹配的模式是CCNA_01234,其中数字在每种情况下都不相同,但总是5位数.
所需的输出是:
"CCNA_01234" "CCNA_02345" "CCNA_12345" "CCNA_23468"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经删除了前一部分的比赛:
y_begin_rm <- sub("D ", "", y)
Run Code Online (Sandbox Code Playgroud)
但我在识别匹配[^ match]表达式时遇到了问题.
y_CCNA_numbers <- sub("[^CCNA_[0-9][0-9][0-9][0-9][0-9]]*$", "", y_begin_rm)
Run Code Online (Sandbox Code Playgroud)
产生输出:
[1] "CCNA_01234 This is example 1 bis" "CCNA_02345 This is example 2"
[3] "CCNA_12345 This is example 3" "CCNA_23468 This is example 4"
Run Code Online (Sandbox Code Playgroud)
似乎问题是匹配中指定的数字完全通过字符串查看,而不是我想要的确切组合.因此,"这是一个例子"之后的数字正在造成很多麻烦.当我省略数字或放置一个仅在CCNA_string之后的数字时,它可以正常工作:
y_CCNA <- sub("[^CCNA_]*$", "", …Run Code Online (Sandbox Code Playgroud)