разработка пакета r - собственная функция не видна для opencpu

Привет, я новичок в написании пакетов R.

импорт разработки пакета r не загружен, сообщил мне использовать roxygen2. Однажды я позвонил devtools::document(), и пространство имен было сгенерировано.

Однако, когда я загружаю этот простой пакет (или пробую его через opencpu), функции НЕ доступны.

вызов кода в родном R, кажется, работает

test2::hello()
[1] "Hello, world!"

Запуск opencpu, например:

1) запустить простой сервер opencpu через library(opencpu)

2) выполнить opencpu$restartкоторый покажет номер порта

3) http://localhost:myPortNumber/ocpu/library/myPackage/info - --> эта конечная точка работает

Как упоминалось в комментариях, это не «правильный» способ вызова функции. Однако opencpu по умолчанию имеет значение myfunction/print, если функция вызывается через HTTP как http://public.opencpu.org/ocpu/library/stats/R/quantile/print, и даже это не работает, когда я вызываю функцию приветствия.

Это демонстрация вызова более сложной функции:

curl http://localhost:myPortNumber/ocpu/library/stats/R/quantile/json -d '{"type":1,"x":[1,2,3,4,5,6,7,8,9,10],"probs":[0.05,0.25,0.75,0.95]}' -H "Content-Type: application/json"

Вы можете просто проверить это через:

curl http://public.opencpu.org/ocpu/library/stats/R/quantile/json -d \
'{"type":1,"x":[1,2,3,4,5,6,7,8,9,10],"probs":[0.05,0.25,0.75,0.95]}' \
-H "Content-Type: application/json"

Я установил его через sudo, например:

sudo R CMD INSTALL test2_0.1.tgz

это означает, что он должен быть доступен через конечную точку /library/test2.

Решение:

Это все еще была неправильная конечная точка API --> мне не хватало подкаталога R

http://localhost:myPort/ocpu/library/myPackage/R/hello/

Пример кода находится здесь: https://github.com/geoHeil/rSimplePackageForOpenCpu


person Georg Heiler    schedule 08.06.2015    source источник
comment
Это то, как вы вызываете функцию с openCPU? Кажется, он ищет файл. Вы, кажется, путаете вещи здесь. Либо он есть, либо он не экспортируется. Ограничьте объем вопроса вызовом некоторой функции из пакета в openCPU.   -  person Gavin Simpson    schedule 09.06.2015
comment
Как упоминалось здесь: пакет R для использоваться удаленно на OpenCPU, он должен устанавливаться с помощью install_github, а имя пакета R должно совпадать с именем репозитория. т.е. если это работает на вашей локальной машине:   -  person Metrics    schedule 09.06.2015
comment
Две вещи, которые нужно знать: (а) opencpu имеет свою собственную библиотеку, возможно, под /usr/lib/opencpu/library/ для пакетов; и (б) он не ищет в личной библиотеке, что часто является требованием для пользователей R на базе Linux. Проверьте attr(packageDescription('test2'), 'file'), чтобы убедиться, что он установлен в месте, известном opencpu (т. е. не в вашем домашнем каталоге).   -  person r2evans    schedule 09.06.2015
comment
@GavinSimpson: это правильная конечная точка для opencpu, при условии, что пакет установлен (правильно). Первый каталог под /ocpu/library/ — это имя библиотеки, файл в этом каталоге — это сама функция.   -  person r2evans    schedule 09.06.2015
comment
Исправление к моему предыдущему комментарию: opencpu может видеть пользовательские каталоги, если они настроены правильно, через /ocpu/user/{username}/library/{pkgname}/. (Хм, никогда раньше этим не пользовался...) (Ссылка: opencpu API .)   -  person r2evans    schedule 09.06.2015
comment
Ты прав. Однако я установил в глобальный каталог vis sudo. Что касается вызова функции, я обновлю пример.   -  person Georg Heiler    schedule 09.06.2015


Ответы (1)


Это все еще была неправильная конечная точка API --> мне не хватало подкаталога R

http://localhost:myPort/ocpu/library/myPackage/R/hello/
person Georg Heiler    schedule 09.06.2015