我想在R
到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转换为数字向量?
答案 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="")))