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

Converting R command line arguments into integer vectors

我想读取 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 转换为数值向量?

你能试试 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)

鉴于x <- "3,3,2"

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

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

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

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