Ошибка в файле с R

Цель состоит в том, чтобы использовать все сценарии, которые находятся в папке (по умолчанию) или те, которые определены Пользователем в аргументах.

Если ввести значение по умолчанию:

RScript.exe Detection.r --detection ALL

Результат выглядит как (нет проблем):

[1] "script1"             "script2"
[3] "script3"

Но если я вручную определяю сценарии для использования:

RScript.exe Detection.r --detection algo1,algo2

Результат выглядит следующим образом:

[[1]]
[1] "algo1" "algo2"

И у меня эта ошибка:

Error in file(filename, "r", encoding = encoding) :
argument 'description' incorrect

Я не знаю, почему это не работает.

Кстати, код, где это обрабатывать:

    if(opt$detectionMethods =='ALL') {
    detectionMethods <- list.files(paste(projectBasePath, '/modules/detections', sep=''))
    detectionMethods <- gsub(".r", "", detectionMethods)
} else {
    detectionMethods <- strsplit(opt$detectionMethods, ",")
}
Метки

1 ответ

  1. Проблема здесь заключается в том, что strsplitвозвращается не анализируемый вектор элементов, а список, содержащий этот анализируемый вектор. Это потомуstrplit, что может также иметь дело со списком или вектором в качестве входных данных (например c('file1,file2,file3', 'file4,file5,file6')). В этом случае вам не нужна эта функциональность.

    Можно использовать unlistдля приведения вектора внутри списка только к вектору. Это делает результат идентичным выходуlist.files, который в свою очередь должен позволить вашему коду работать. Например:

    unlist(strsplit('file1,file2,file3', split = ','))
    [1] "file1" "file2" "file3"
    

    Можно также создать пользовательскую функцию:

    simple_strsplit = function(...) {
        return(unlist(strsplit(...)))
    }
    

    который по существу передает все свои аргументы ...непосредственноstrplit, но вызывает unclassперед возвращением результата.