将R命令行参数转换为整数向量

时间:2016-03-22 10:02:56

标签: r rscript

我想在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转换为数字向量?

2 个答案:

答案 0 :(得分:5)

你可以尝试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)

答案 1 :(得分:3)

给定x <- "3,3,2"

您可以明显地将该字符拆分为,条件并将其转换为numeric

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

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

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