【问题标题】:command line arguments in bash to Rscriptbash 到 Rscript 中的命令行参数
【发布时间】:2011-05-31 16:08:52
【问题描述】:

我有一个 bash 脚本,它创建一个 csv 文件和一个 R 文件,它从中创建图形。

在 bash 脚本结束时,我调用 Rscript Graphs.R 10

我得到的回复如下:

Error in is.vector(X) : subscript out of bounds
Calls: print ... <Anonymous> -> lapply -> FUN -> lapply -> is.vector
Execution halted

我的 Graphs.R 的前几行是:

#!/bin/Rscript
args <- commandArgs(TRUE)
CorrAns = args[1]

不知道我做错了什么?网上的建议对我来说似乎是说这应该有效。很难理解commandArgs

【问题讨论】:

    标签: bash r arguments


    【解决方案1】:

    Rscript args.R 10 其中 10 是我们要传递给 R 脚本的数值。

    print(as.numeric(commandArgs(TRUE)[1]) 打印出可以分配给变量的值。

    【讨论】:

    • 这与我更新后的答案相同,您接受为“最佳”的答案并不能回答您的问题。
    • Joshua,据我所知,我根据自己的需要调整了 marcog 的答案,然后将其作为“最佳”答案输入。我不记得当时您的最新答案是可见的。不过,我非常感谢您的帮助。
    【解决方案2】:

    在 args.R 中有以下内容

    print(commandArgs(TRUE)[1])
    

    以及 args.sh 中的以下内容

    Rscript args.R 10
    

    我从bash args.sh得到以下输出

    [1] "10"
    

    并且没有错误。如有必要,使用as.numeric(commandArgs(TRUE)[1]) 转换为数字类型。

    【讨论】:

    • 谢谢。我发现它以字符串形式返回。如何将其转换为数值。我只是想找到答案。
    • @samar print(as.numeric(commandArgs(TRUE)[1])) 打印 [1] 10
    • 刚刚找到答案。 x
    • @samar 太棒了!如果其他人来这里有同样的问题,你能把它作为答案发布吗?
    • 对不起,我没有看到你更简单的答案。我试图看看如何将其发布为答案。对此有任何建议。
    【解决方案3】:

    只是猜测,也许您需要将 CorrAns 从字符转换为数字,因为 ?CommandArgs 的值部分说:

    包含名称的字符向量 的可执行文件和 用户提供的命令行参数。

    更新:它可能很简单:

    #!/bin/Rscript
    args <- commandArgs(TRUE)
    (CorrAns = args[1])
    (CorrAns = as.numeric(args[1]))
    

    【讨论】:

    • 谢谢。不太确定如何实现。我不认为 R 中的变量名与字符或数字相关联。但是将再次检查 R Intro 书。
    • @samar 我建议尝试as.numeric(args[1]),就像我在更新的答案中所做的那样。
    • 非常感谢。这对我来说是一个新网站,就像 R 对我来说是一种新体验一样。两者都提供了极大的满足感。
    【解决方案4】:

    阅读docs,您似乎需要从对commandArgs() 的调用中删除TRUE,因为您没有使用--args 调用脚本。要么,要么你需要打电话给Rscript Graphs.R --args 10

    用法

    commandArgs(trailingOnly = FALSE)

    参数

    trailingOnly 合乎逻辑。应该只 --args 之后的参数是否被返回?

    【讨论】:

    • 谢谢。我这样做了,但错误消息与我最初报告的相同
    • @samar 查看我的新答案,看看是否有帮助?
    猜你喜欢
    • 1970-01-01
    • 2022-07-26
    • 2014-03-14
    • 2020-04-22
    • 2012-08-15
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    相关资源
    最近更新 更多