Использование OpenCPU для загрузки данных, используемых для создания графика

Я использую OpenCPU в качестве уровня представления для создания некоторых графиков на основе пакета R. Графики работают хорошо, и теперь пользователям требуется загрузить данные, используемые для построения графика для более глубокого анализа. Есть возможность восстановить данные? Можно ли делать не двойной вызов тех функций, извлекающих данные (я подключен к БД)?

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

Большое спасибо за ваш ответ.


person Luis Gonzalez    schedule 12.05.2014    source источник


Ответы (1)


Вероятно, вы захотите создать две функции в R:

  • getdata: функция, которая извлекает данные из вашей базы данных и возвращает фрейм данных.
  • makeplot : функция с аргументом dataframe, которая создает ваш график и ничего не возвращает.

Тогда ваш клиент вы можете назвать их отдельно. Сначала клиент вызывает getdata для извлечения данных из базы данных, а сервер ответит временным {key}, который представляет возвращенный объект фрейма данных на сервере, например x01234567.

Затем вы можете использовать этот ключ для загрузки набора данных или использовать его в качестве аргумента для создания графика. Чтобы загрузить данные, просто создайте гиперссылку, например:

  • http://your.server.com/ocpu/tmp/x01234567/R/.val/csv
  • http://your.server.com/ocpu/tmp/x01234567/R/.val/tab
  • http://your.server.com/ocpu/tmp/x01234567/R/.val/json

Чтобы создать график, клиент вызывает makeplot и передает x01234567 в качестве значения аргумента для фрейма данных. Сервер OpenCPU автоматически ищет объект для этого ключа в объекте фрейма данных, который был возвращен ранее getdata.

person Jeroen    schedule 13.05.2014
comment
Большое спасибо! Я использовал примеры вашей библиотеки JavaScript opencpu.org/jslib.html#lib-jsonrpc чтобы решить мою проблему. - person Luis Gonzalez; 22.05.2014
comment
Есть ли способ получить данные, связанные с ключом сеанса (x01234567), если он не был передан в качестве аргумента функции? т.е. при вызове base::identity или knitr::knit? - person Ruben; 05.11.2014
comment
О, только что нашел этот ответ. Замечательно. Извините за беспокойство! - person Ruben; 05.11.2014