我有一个bash脚本,可以创建一个csv文件和一个从中创建图形的R文件。
在bash脚本的最后,我调用了Rscript Graphs.R 10
我得到的回应如下:
Error in is.vector(X) : subscript out of bounds
Calls: print ... <Anonymous> -> lapply -> FUN -> lapply -> is.vector
Execution halted
我的Graphs.R的前几行是:
#!/bin/Rscript
args <- commandArgs(TRUE)
CorrAns = args[1]
不知道我做错了什么?网上的建议在我看来应该说这应该有效。很难理解commandArgs
答案 0 :(得分:16)
在args.R中有以下内容
print(commandArgs(TRUE)[1])
以及args.sh中的以下内容
Rscript args.R 10
我从bash args.sh
[1] "10"
并没有错误。如有必要,请使用as.numeric(commandArgs(TRUE)[1])
转换为数字类型。
答案 1 :(得分:6)
只是一个猜测,也许你需要将CorrAns
从字符转换为数字,因为?CommandArgs
的值部分说:
包含名称的字符向量 可执行文件和 用户提供的命令行参数。
更新:它可以像以下一样简单:
#!/bin/Rscript
args <- commandArgs(TRUE)
(CorrAns = args[1])
(CorrAns = as.numeric(args[1]))
答案 2 :(得分:1)
阅读docs,您可能需要从调用TRUE
中移除commandArgs()
,因为您没有使用--args
调用脚本。要么是,要么致电Rscript Graphs.R --args 10
。
用法
commandArgs(trailingOnly = FALSE)
参数
trailingOnly
符合逻辑。应该只 返回--args
后的参数?
答案 3 :(得分:1)
Rscript args.R 10
其中10是我们想要传递给R脚本的数值。
print(as.numeric(commandArgs(TRUE)[1])
打印出可以分配给变量的值。