Не удалось загрузить файл через пакет getopt в R - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь использовать пакет 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 Выполнение остановлено Может кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 18 февраля 2019

Вам необходимо протестировать компоненты, и если указано -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 , который еще проще и болеефункциональный.

...