为什么运行“ devtools :: check”会导致R识别自定义函数-为什么在此步骤之前我的函数没有被识别?

问题描述

我为一个名为“ DataSHIELD”(https://www.datashield.ac.uk)的学术项目工作,并且参与了他们的新功能的开发和测试。新功能之一称为“ {ds.glmPredict”,它是本机R“ predict.glm()功能自定义版本,但是进行了更改,使得没有非散列统计信息返回到数据分析人员(这是整个DataSHIELD项目的总体目标。

功能代码包含在github项目和分支中,我将其拉入RStudio项目,以便将所有内容放置在正确的目录中。

但是,如果我说,尝试为该特定功能ds.glmPredict”加载帮助;

> ?ds.glmPredict()
Error in .helpForCall(topicExpr,parent.frame()) : 
  no methods for ‘ds.glmPredict’ and no documentation for it as a function

但是,如果我随后运行devtools::check(),则可以通过R幕后的某些东西来工作(对我对devtools的无知,请问我从来没有遇到过一个很好的消息源,可以用简单的语言向我解释什么是devtools软件包。 ),完成后,我可以运行?ds.glmPredict(),它将首先生成我想要的帮助控制台信息:

> ?ds.glmPredict()
Rendering development documentation for 'ds.glmPredict'

DataSHIELD的基础结构是否出现问题,导致R在首次启动程序时无法识别特定功能,或者可能完全是其他原因?

解决方法

devtools::document将解决问题。 R找不到帮助文件,因为您只拉了功能代码而没有.Rd中的package root\man个文件,这就是为什么会引发错误。 devtools::check自动生成并检查软件包,并在构建过程中调用devtools::document,它只是roxygen2::roxygenize的包装,在将特殊注释转换为{{1 }}文件。