Rscript не имеет функции

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

is

Скрипт просто выводит функцию «есть». Однако, если я помещу его в файл следующим образом:

#!/usr/bin/Rscript
is

а затем запустите его с помощью «./test.R» или «Rscript test.R», я получаю следующую ошибку:

Error: object 'is' not found
Execution halted

Кажется, что функция «есть» не определена в Rscript так, как в R. Как я могу заставить мой скрипт работать?

Примечание. Очевидно, моя цель не просто вывести функцию "есть". Я пытаюсь использовать gamlss, а функция is вызывается gamlss, что приводит к этой ошибке.

Изменить: в R функция sessionInfo() дает:

R version 3.0.2 (2013-09-25)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tools_3.0.2

Из Rscript это дает:

R version 3.0.2 (2013-09-25)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  base 

person jcrudy    schedule 09.07.2014    source источник
comment
Что вы получаете от вывода sessionInfo() как в интерактивном сеансе, так и при вызове из Rscript.   -  person Dason    schedule 09.07.2014
comment
Я добавлю вывод sessionInfo к моему вопросу. В принципе, ты был прав. SessionInfo() показывает, что пакет методов прикреплен в R, но не в Rscript.   -  person jcrudy    schedule 09.07.2014
comment
В ?Rscript они говорят следующее: по умолчанию для «Rscript» отсутствуют «методы», поскольку они занимают около 60% времени запуска.   -  person Dason    schedule 09.07.2014
comment
А, это я как-то пропустил. Мне потребовалось некоторое время, чтобы понять, что это часть методов, а не базы, я думаю.   -  person jcrudy    schedule 09.07.2014


Ответы (1)


Оказывается, решение состоит в том, чтобы загрузить пакет «methods» (который содержит функцию «is»). Я предполагаю, что он загружается по умолчанию в R, но по какой-то причине не в Rscript. Если я изменю свой сценарий на:

#!/usr/bin/Rscript
library(methods)
is

тогда он отлично работает из командной строки.

person jcrudy    schedule 09.07.2014