【发布时间】:2015-08-23 13:55:42
【问题描述】:
您好,我是编写 R 包的新手。
r package development imports not loaded 建议我使用 roxygen2。
我曾经调用devtools::document() 并生成了命名空间。
但是,当我加载这个简单的包(或通过 opencpu 尝试)时,功能不可用。
在原生 R 中调用代码似乎可以工作
test2::hello()
[1] "Hello, world!"
像这样启动opencpu:
1) 通过library(opencpu)启动opencpu简单服务器
2) 执行opencpu$restart会显示一个端口号
3) http://localhost:myPortNumber/ocpu/library/myPackage/info ---> 这个端点有效
正如 cmets 中所述,这不是调用函数的“正确”方式。但是,如果通过 HTTP 以 http://public.opencpu.org/ocpu/library/stats/R/quantile/print 调用函数,则 opencpu 默认为 myfunction/print,即使在我调用 hello 函数时也不起作用。
这是一个如何调用更复杂函数的演示:
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/
【问题讨论】:
-
这就是你用openCPU调用函数的方式吗?它似乎在寻找一个文件。你似乎在这里混为一谈。要么是出口,要么不出口。将问题的范围限制为从 openCPU 中的包中调用某些函数。
-
如 here 所述:对于要在 OpenCPU 上远程使用的 R 包,它必须可以使用
install_github安装,并且 R 包名称必须与存储库名称相同。 IE。如果这适用于您的本地计算机: -
两件事要知道:(a)opencpu 有自己的库,可能在
/usr/lib/opencpu/library/下用于包; (b) 它不在个人库中查找,这通常是基于 linux 的 R 用户的要求。检查attr(packageDescription('test2'), 'file')以查看它是否安装在 opencpu 知道的位置(即 not 在您的主目录中)。 -
@GavinSimpson:假设已(正确)安装了软件包,那是 opencpu 的正确端点。
/ocpu/library/下的第一个目录是库名,这个目录下的“文件”就是函数本身。 -
更正我之前的评论:如果设置正确,opencpu 可以通过
/ocpu/user/{username}/library/{pkgname}/查看用户目录。 (呵呵,以前没用过……)(参考:opencpu api。)
标签: r namespaces package opencpu