我试图使用getopt包打开我的文件但代码似乎不起作用:
> library(getopt)
args <- commandArgs(trailingOnly = FALSE)
spec = matrix(c(
'help' , 'h', 0, "character",
'input' , 'i', 1, "file",
'output' , 'o', 1, "character"), byrow=TRUE, ncol=4)
opt = getopt(spec)
if(opt$input){
file <- read.table(args[1])
}
print(file)
我试图使用命令行来运行代码,如:
Rscript --slave filename.R -i file.txt
错误信息是:storage.mode(peek.optstring)中的错误< - 模式:无效值调用:getopt ... tryCatch - > tryCatchList - > tryCatchOne - > doTryCatch执行暂停可以有人帮助我吗?
您需要测试组件,如果给出了-i filename.txt
,那么opt$file
就是您用来访问它的方法。
修复后的版本是
#!/usr/bin/Rscript
library(getopt)
spec <- matrix(c(
'help' , 'h', 0, "character",
'input' , 'i', 1, "character",
'output' , 'o', 1, "character"),
byrow=TRUE, ncol=4)
opt <- getopt(spec)
if ( !is.null(opt$input) ) {
file <- read.table(opt$input)
}
print(file)
我过去经常使用这个包,但是现在我更喜欢docopt,它更容易使用,更有特色。