Почему запуск «devtools :: check ()» вызывает распознавание пользовательской функции R — почему моя функция не распознается до этого шага?

#r #devtools

#r #devtools

Вопрос:

Я работаю в академическом проекте под названием «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 при первом запуске программы, или это, вероятно, что-то совсем другое?

Комментарии:

1. В вашем рабочем процессе, похоже, отсутствует важный этап создания пакета. devtools::check создает пакет (включая документацию) перед запуском тестов.

Ответ №1:

devtools::document сделает свое дело. R не удается найти файлы справки, потому что вы извлекли только код функции без .Rd файлов, которые есть package rootman , поэтому он выдает ошибку. devtools::check автоматически создает и проверяет пакет, и в процессе сборки он вызывает devtools::document , который является просто оболочкой для roxygen2::roxygenize этого, выполняет тяжелую работу по преобразованию специальных комментариев в .Rd файл.