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

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


person Branko K.    schedule 02.07.2013    source источник
comment
добавьте require(methods) в начале вашего скрипта   -  person dickoa    schedule 02.07.2013
comment
Работал как шарм. Спасибо!   -  person Branko K.    schedule 02.07.2013
comment
@dickoa, +1. Чтобы этот вопрос не остался официально «без ответа», не могли бы вы преобразовать ваш комментарий в ответ?   -  person gung - Reinstate Monica    schedule 02.07.2013
comment
@gung Вы правы, я преобразовал свой комментарий в ответ ... спасибо   -  person dickoa    schedule 02.07.2013


Ответы (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"
person dickoa    schedule 02.07.2013