我正在尝试从MEME suite运行外部工具,这个工具之一(jaspar2meme)生成一个文本文件,然后将其用作第二个工具(fimo)的输入。这是我的代码:
#!usr/bin/Rscript
com1 <- "meme/bin/jaspar2meme"
arg1 <- "-bundle jaspar_plant_2014.pfm"
message("jaspar2meme command: ", com1, arg1)
system2(command = com1, args = arg1, stdout = "motif.fimo", wait = T)
com2 <- paste0("meme/bin/fimo")
arg2 <- paste0("--text --oc . --verbosity 1 --thresh 1.0E-4 --bgfile bg.fimo motif.fimo Genes_up_h16.ame")
message("FIMO command: ", com2, arg2)
system2(command = com2, args = arg2, stdout = "fimoresult.txt", wait = T)
当我从RStudio中运行此代码时(通过source
),它运行正常:文件motif.fimo
由jaspar2meme
生成,并由fimo
用于生成生成的文件fimoresult.txt
。
当我从shell(bash)通过Rscript
运行相同的脚本时,motif.fimo
也按预期生成,但fimo
和fimoresult.txt
找不到system()
仍然是空的。
到目前为止,我尝试使用system2()
或wait=T
,使用motif.fimo
选项,指定{{1}}的完整路径,但没有成功。< / p>
答案 0 :(得分:0)
我终于得到了...... locale
变量在RStudio和Rscript中有所不同。 motif.fimo
生成的jaspar2meme
文件在两种情况下都看起来相同,但显然不是。通过以下方式将第一个电话号码更改为system2()
system2(command = com1, args = arg1, stdout = "motif.fimo", wait = T, env = c("LC_NUMERIC=C"))
解决我的问题。