无法通过R中的getopt包加载文件

问题描述 投票:1回答:1

我试图使用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执行暂停可以有人帮助我吗?

r getopt
1个回答
2
投票

您需要测试组件,如果给出了-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,它更容易使用,更有特色。

© www.soinside.com 2019 - 2024. All rights reserved.