2016-08-10 6 views
0

Я стараюсь использовать Rserve из Tableau. Я в состоянии выполнить следующий код:Как поместить функции в рабочее пространство Rserve?

SCRIPT_REAL(".arg1*.arg2", MAX([Price]), [TestParam]) 

В принципе, я пишу код R в Tableau (".arg1*.arg2" в моем случае) и отправить его в Rserve. Rserve, в свою очередь, берет код, выполняет его и отправляет результат обратно в Tableau.

Теперь я пытаюсь сделать то же самое, но определяя функцию внутри среды R и получая ее от Tableau через Rserve. Итак, я выполняю следующее в R:

> myfunc <- function(x, y) {x*y} 
> library(Rserve) 
> Rserve() 

Это означает, что я определить функцию в R среде, а затем начать Rserve в той же среде, с надеждой, что Rserve будет увидеть функцию, которую я определил ранее.

Тогда в Tableau я определяю новый столбец, используя этот код:

SCRIPT_REAL("myfunc(.arg1,.arg2)", MAX([Price]), [TestParam]) 

Как вы можете видеть, я пытаюсь вызвать функцию (myfunc), что я определил в R.

Как result Я получаю сообщение об ошибке, которое сообщает мне, что myfunc не найден.

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

+0

Я не гуру Rserve, но я предполагаю, что вам нужно будет превратить его в пакет и установить его в системной библиотеке (не под '$ HOME'). – r2evans

ответ

1

Возможно ли определить функцию в R, а затем сделать ее видимой для Rserver, чтобы Rserve мог выполнять эти функции?

Конечно, это так. Вы «просто» сказать Rserve к

  • источник файл с функциями (не рекомендуется, читать дальше)
  • нагрузки одного или нескольких библиотек по мере необходимости (рекомендуется также для локального кода)

просто как вы бы с любой другой R-сессией, потому что это то, что предлагает Rserver: безголовые сеансы R.

+0

Благодарим вас за ответ. Мне нужно признать, что я очень новичок в Р. Итак, я не знаю, как «пообщаться» с Rserve. В частности, как создать файл с функцией или как поместить мою функцию в мою библиотеку. Трудно создать мою собственную (локальную) библиотеку? – Roman

+0

Это не так, но просить в комментарии не лучший способ узнать. Я просто искал «создание R-пакета», получил 140 миллионов (хитов), включая ключевые маркеры популярного учебника. Это то, чему стоит учиться. Здесь также есть сотни связанных вопросов (и ответов!). –

+0

Прежде чем я написал свой комментарий, я тоже искал googled, и я нашел pdf-файл с 19 страницами. Причина, по которой я написал комментарий, заключается в том, что я предполагаю (надеюсь), что есть только одна «волшебная» команда (одна строка кода), с помощью которой я могу загрузить файл (или создать библиотеку), и все будет работать. И если это так, я думаю, имеет смысл спросить об этом здесь. Особенно учтено, что я под давлением времени и не успеваю прочитать 20-страничный документ (к сожалению). – Roman