我正在尝试predict从另一个包中导入S3方法pls.我有一个使用这些预测值的函数.问题是,在编译包时:
Error : object 'predict' is not exported by 'namespace:pls'
Run Code Online (Sandbox Code Playgroud)
我把这个Gist放在一起作为一个最小的例子,它突出了我的问题,并包含以下R文件:
#' Test function
#'
#' @importFrom pls predict
#'
#' @export
myfunc <- function(x){
stopifnot(class(x) == "mvr")
predict(x)*2
}
Run Code Online (Sandbox Code Playgroud)
Rei*_*son 12
总结一下,因为原件(下面)现在已经过时,并且在错误或误导的地方.
最近的问题是pls包中没有命名predict的函数; 有一些未出口的S3方法,但没有.所以你不能导入它.在一般生活中的统计数据包,就需要如下面讨论从那里进口.predictpredictpredict
你的包需要具有Depends: pls在DESCRIPTION以正确的predict方法是提供给R.有没有在请,你可以专门进口.
您还需要predict从stats命名空间导入泛型,因此请添加
#' @importFrom stats predict
Run Code Online (Sandbox Code Playgroud)
因为这将导入您的包命名空间中的泛型.您还需要添加Imports: stats到您的DESCRIPTION文件中,以表明您需要stats包; 以前我们不必声明R附带的基本软件包集合的依赖关系(即R附带的非推荐的基础软件包).
这里的主要问题是pls没有定义函数/方法predict.它为predict泛型提供了几种方法,但不提供通用本身.
如果需要,您需要从stats包中导入泛型- 我不确定您是否这样做,因为您没有创建需要或基于泛型的函数.至少你需要
#' @importFrom stats predict
Run Code Online (Sandbox Code Playgroud)
虽然您可能需要/想要导入整个统计信息命名空间 - 取决于您的软件包在您当前正在处理的功能之外的功能.
另一个问题是,predict.mvr是不是从出口PLS命名空间
> require(pls)
Loading required package: pls
Attaching package: ‘pls’
The following object(s) are masked from ‘package:stats’:
loadings
> predict.mvr
Error: object 'predict.mvr' not found
> pls::predict.mvr
Error: 'predict.mvr' is not an exported object from 'namespace:pls'
> pls:::predict.mvr
function (object, newdata, ncomp = 1:object$ncomp, comps, type = c("response",
"scores"), na.action = na.pass, ...)
Run Code Online (Sandbox Code Playgroud)
因此,您不能只导入它.因此,您的包需要有Depends: pls,DESCRIPTION以便predict找到正确的方法.
| 归档时间: |
|
| 查看次数: |
1335 次 |
| 最近记录: |