【问题标题】:Converting R command line arguments into integer vectors将 R 命令行参数转换为整数向量
【发布时间】:2016-07-09 03:49:00
【问题描述】:

我想读取RRscript 中的命令行参数,并将其中存储的值用于一些整数运算。默认情况下,命令行参数作为字符导入:

#!/usr/bin/env Rscript
arg <- commandArgs(trailingOnly = TRUE)
x = as.vector(arg[1])
class(x)
x
y = as.vector(arg[2])
class(y)
y
cor.test(x,y)

这是此脚本的输出:

$ Rscript Correlation.R 3,3,2 4,8,6
[1] "character"
[1] "3,3,2"
[1] "character"
[1] "4,8,6"
Error in cor.test.default(x, y) : 'x' must be a numeric vector
Calls: cor.test -> cor.test.default
Execution halted

如何将 x 和 y 转换为数值向量?

【问题讨论】:

    标签: r rscript


    【解决方案1】:

    你能试试 strsplit 和 as.integer() 还是 as.numeric() 吗?

    #!/usr/bin/env Rscript
    arg <- commandArgs(trailingOnly = TRUE)
    x = as.integer(strsplit(arg[1], ",")[[1]])
    class(x)
    x
    y = as.integer(strsplit(arg[2], ",")[[1]])
    class(y)
    y
    cor.test(x,y)
    

    【讨论】:

      【解决方案2】:

      给定x &lt;- "3,3,2"

      您显然可以根据, 标准拆分字符并将其转换为numeric

      as.numeric(strsplit(x,",")[[1]])
      

      另一种方法是评估这个字符串表达式,就好像它是指令的一部分一样。在这种情况下,我不会称这个解决方案更聪明,但仍然值得一提。

      eval(parse(text=paste("c(",x,")",sep="")))
      

      【讨论】:

        猜你喜欢
        • 2014-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 2012-05-10
        • 2018-06-26
        • 1970-01-01
        相关资源
        最近更新 更多