未找到未定义的功能/功能

时间:2016-07-20 23:47:43

标签: r function package

我为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

1 个答案:

答案 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