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

7

我希望能够通过 Rscript 读取命令行参数,在一些整数操作中使用它们的值。默认情况下,命令行参数会被导入为字符类型:

#!/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个回答

7

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

3

假设有x <- "3,3,2"

你可以显然地按照,的标准拆分字符并将其转换为numeric

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

另一种方法是将这个字符串表达式视为指令的一部分进行评估。在这种情况下,我不会称之为更聪明的解决方案,但仍值得一提。
eval(parse(text=paste("c(",x,")",sep="")))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接