2013-07-02 3 views
3

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

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 

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

+3

надстройку 'требуют (методы)' в начале вашего скрипта – dickoa

+0

работал как шарм. Благодаря! –

+0

@ dickoa, +1. Чтобы этот вопрос не был официально «оставлен без ответа», не могли бы вы перевести свой комментарий на ответ? – gung

ответ

3

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" 
Смежные вопросы