我为R创建了一个包来学习如何开发这些东西,我得到了一个我无法解决的错误。我看到这个错误并不罕见,但我找不到解决方案。
这是我的包的代码(非常简单):
absconc<-function(x,a,b,...)
{
a<-as.numeric(a)
b<-as.numeric(b)
absconcCalc<- function(x,a,b,...)
{
conc<- (x*a)+b
}
conc<-absconcCalc(x,a,b,...)
print.absconc<- function(x,a,b,...)
{
cat("Slope:")
cat(a,"\n")
cat("Intercept:")
cat(b,"\n")
cat("Concentration:")
cat(conc)
}
print.absconc(x,a,b)
}
我使用package.skeleton
创建了包,它就像魅力一样,甚至使用R CMD build absconc
构建包也很有效。
问题是当我尝试使用它给我Error: could not find function "absconc"
的包时。
我虽然这是来自NAMESPACE和导出的问题所以我尝试使用export(absconc)
导出函数。当我尝试构建时,我得到一个错误说:
Error in namespaceExport(ns, exports) :
undefined exports: absconc, absconcCalc, print.absconc
我现在正在摸不着头脑,理解为什么我的功能无法识别。 我很感激一些帮助,因为这只是我的第一个包。
编辑:这是我的文件(有点凌乱,对不起) https://github.com/Frisacher/absconc答案 0 :(得分:0)
您不应手动编辑NAMESPACE。将行#' @export
插入R文件的顶部,然后在控制台中运行devtools::document()
。这将为你做必要的事。
现在您可以执行devtools::load_all()
并运行您的功能。
更明确地说:
1)在根目录下创建一个名为“R”的文件夹,并创建一个R脚本,其中包含您在评论中建议的 Martin Morgan 的功能。
2)在R脚本中添加 roxygen 注释以将其导出:
#' @export
absconc<-function(x,a,b,...)
{
a<-as.numeric(a)
b<-as.numeric(b)
...
}
3)在控制台中执行devtools :: document()。
> devtools::document()
Updating absconc documentation
Loading absconc
Writing NAMESPACE
4)使用devtools :: load_all()加载你的包。
> devtools::load_all()
Loading absconc
5)运行你的功能。
> absconc(1,2,3)
Slope:2
Intercept:3
Concentration:5