Rscript не распознает функцию setGeneric

Я пытаюсь преобразовать R-скрипт в то, что клиент может запустить в пакетном режиме. Мой код использует универсальные функции, и один фрагмент, который находится в начале, выглядит так:

setGeneric("testInput", function(inputData, params = list())
    standardGeneric("testInput"))

Я использовал R CMD BATCH, и он отлично работает. Однако я не смог найти простой способ заставить мой скрипт выводить вывод на консоль, поэтому, основываясь на этом (и на предположении, что Rscript.exe - это "правильный" способ запуска R-файлов), я решил переключиться на Rscript. Однако при запуске того же самого файла.R с Rscript я получаю следующее:

Error: could not find function "setGeneric"
Execution halted

Я знаю, что это, вероятно, тривиальная причина, но я просто не могу понять это. Может кто-нибудь указать мне, где ошибка?
Какие-либо предложения?

1 ответ

setGeneric является частью methods пакет, который обычно загружается при запуске R в интерактивном сеансе, но не в неинтерактивном сеансе с использованием Rscript или же littler,

Так что вам нужно добавить require(methods) перед звонком setGeneric в вашем сценарии.

Например, этот код не будет работать

Rscript -e "setGeneric('mean', function(x) standardGeneric('mean'))"
Error: could not find function "setGeneric"
Execution halted

Но этот будет работать

Rscript -e "require(methods);setGeneric('mean', function(x) standardGeneric('mean'))"
Loading required package: methods
[1] "mean"
Другие вопросы по тегам