【发布时间】:2016-07-20 23:47:43
【问题描述】:
我为 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
【问题讨论】:
-
你是否把你的函数放在一个以
.R结尾的文件和你的包的R/目录中,例如R/absconc.R? -
使用
package.skeleton()或devtool::create()自动生成包会在R/目录中创建absconc.R。你说的是这个吗? -
为什么不使用你的包创建一个 github 存储库,以便其他人可以更轻松地重现你的问题?另请注意,上面代码 sn-p 中的大括号
{}意味着只定义了一个函数(absconc);你的源代码是这样的吗? -
给你!另外,从技术上讲(我认为)我只需要并使用一个功能
absconc。我不认为其他的必须进口......