Привет, я новичок в написании пакетов 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
install_github
, а имя пакета R должно совпадать с именем репозитория. т.е. если это работает на вашей локальной машине: - person Metrics   schedule 09.06.2015/usr/lib/opencpu/library/
для пакетов; и (б) он не ищет в личной библиотеке, что часто является требованием для пользователей R на базе Linux. Проверьтеattr(packageDescription('test2'), 'file')
, чтобы убедиться, что он установлен в месте, известном opencpu (т. е. не в вашем домашнем каталоге). - person r2evans   schedule 09.06.2015/ocpu/library/
— это имя библиотеки, файл в этом каталоге — это сама функция. - person r2evans   schedule 09.06.2015/ocpu/user/{username}/library/{pkgname}/
. (Хм, никогда раньше этим не пользовался...) (Ссылка: opencpu API .) - person r2evans   schedule 09.06.2015