less than 1 minute read

R 的文档为什么就这么难看懂呢……


R Cookbookargv <- commandArgs(TRUE) 来接收 RScript 命令的命令行参数,我就 ?commandArgs 去查一下这个 TRUE 到底是啥意思:

trailingOnly logical. Should only arguments after –args be returned?

If trailingOnly = TRUE, a character vector of those arguments (if any) supplied after –args.

很奇怪,这里的意思是带参数要先写 --args 吗?但是书上的例子没写也运行得好好的。我在 console 直接输入 RScript 并回车,打出的 usage 也没有 --args 这一项:

$ Rscript
Usage: /path/to/Rscript [--options] [-e expr [-e expr2 ...] | file] [args]

没办法,只有试验下了,我们写一个 printArgv.R:

argv <- commandArgs(TRUE)
print(argv)

print("-----")

argv <- commandArgs(FALSE)
print(argv)

然后运行 Rscript printArgv.R 2 3

$ Rscript printArgv.R 2 3
[1] "2" "3"
[1] "-----"
[1] "e:\\R\\R-3.1.0\\bin\\x64\\Rterm.exe" "--slave"
[3] "--no-restore"                        "--file=printArgv.R"
[5] "--args"                              "2"
[7] "3"

可见,--args 是 R 自己扩展上去的,我们把参数 2 3 写在末尾它会自动被扩展成 --args 2 3,然后 commandArgs(TRUE) 的逻辑就说得通了。另外,我们自己是不需要输入 --args 的,否则会被识别成一个字符串参数,i.e. 变成 --args --args 2 3 这样。

Categories:

Updated:

Comments