从RStudio或通过Rscript调用`system()`的不同之处?

时间:2015-02-27 12:07:59

标签: r bash rstudio

我正在尝试从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.fimojaspar2meme生成,并由fimo用于生成生成的文件fimoresult.txt

当我从shell(bash)通过Rscript运行相同的脚本时,motif.fimo也按预期生成,但fimofimoresult.txt找不到system()仍然是空的。

到目前为止,我尝试使用system2()wait=T,使用motif.fimo选项,指定{{1}}的完整路径,但没有成功。< / p>

1 个答案:

答案 0 :(得分:0)

我终于得到了...... locale变量在RStudio和Rscript中有所不同。 motif.fimo生成的jaspar2meme文件在两种情况下都看起来相同,但显然不是。通过以下方式将第一个电话号码更改为system2()

system2(command = com1, args = arg1, stdout =  "motif.fimo", wait = T, env = c("LC_NUMERIC=C"))

解决我的问题。