【问题标题】:Rscript: Define path file as argumentRscript:将路径文件定义为参数
【发布时间】:2011-01-01 08:49:17
【问题描述】:

我试试这个命令:

Rscript "/Users/test/Scripts/arg_test.R" "path_in=/Users/test/GR/web-app/Rproject/Inputs/Rmerge/Description.csv" path_in2="/Users/test/IdeaProjects/Rproject/Inputs/Rmerge/Template_Auto.csv"

但我有这个错误: 解析错误(text = args[[i]]):“path_in=/”中的意外'/'

Rscript 的一部分:

args=(commandArgs(TRUE))

if(length(args)==0){
    print("No arguments supplied.")
}else{
    for(i in 1:length(args)){
         eval(parse(text=args[[i]]))
    }
}


path_out = "/Users/test/Rproject/Results/"

annotation = read.csv(paste(path_in, sep=""))

modules = read.csv(paste(path_in2, sep=""))

merge_output = merge(annotation, modules, by = "Module")

如何将 path_in 定义为参数(args)?

谢谢。

【问题讨论】:

    标签: bash shell r rscript


    【解决方案1】:

    用正确的赋值运算符 <- 替换 = 并用单引号保护每个参数对我有用:

    Rscript /tmp/RscriptArgs.R  \
      'path_in<-"/Users/test/GR/web-app/Rproject/Inputs/Rmerge/Description.csv"'  \
      'path_in2<-"/Users/test/IdeaProjects/Rproject/Inputs/Rmerge/Template_Auto.csv"'
    

    /tmp/RscriptArgs.R 是您从脚本中显示的内容。

    【讨论】:

      【解决方案2】:

      双引号内有path_in=,但外有path_in2=。会不会是这个问题?

      【讨论】:

        【解决方案3】:

        谢谢你,我刚刚解决了我的问题!

        我应该使用“path_in='/Users/test/...'”而不是“path_in=/Users/test/...”。 与报价配合使用。

        Rscript "/Users/test/Scripts/arg_test.R" "path_in='/Users/test/GR/web-app/Rproject/Inputs/Rmerge/Gene-level Description for Modules.csv'" "path_in2='/Users/test/IdeaProjects/Rproject/Inputs/Rmerge/Template_Auto.csv'"
        

        由 Dirk 修复添加也可以正常工作(谢谢)!

        【讨论】:

        • 很高兴看到你把它修好了。对于提出问题的人来说,如果给出了一个适用的答案,那么通常会“接受”一个适用的答案,而不是提供另一个答案。所以你可能想在这里选择一个。
        • 我选择您的修复(只需添加我的修复以添加另一种方法来纠正此错误)。
        • Merci bien --- 我什至没有建议 littler 作为 Rscript 的替代品 ;-)
        猜你喜欢
        • 2018-07-10
        • 1970-01-01
        • 2020-08-04
        • 2017-01-10
        • 2018-06-16
        • 2010-09-24
        • 1970-01-01
        • 2011-09-22
        • 1970-01-01
        相关资源
        最近更新 更多