Недокументированное предупреждение объектов кода для функций, которые я не хочу экспортировать - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь написать пакет R с Rcpp. Все работает хорошо, за исключением предупреждения, выдаваемого R CMD check my_package.

Status: 1 WARNING
checking for missing documentation entries ... WARNING
Undocumented code objects:
  ‘shiny_function’
All user-level objects in a package should have documentation entries.

Здесь shiny_function реализован на C ++ и экспортируется с атрибутом Rcpp

// [[Rcpp::export]]
int shiny_function(int arg) {
  return arg;
}

Проблема в том, что я хочу "переименовать" его в shiny.function при экспорте в R, поэтому в R/shiny_function.R у меня есть

shiny.function <- function(arg) {
  .Call("_my_package_shiny_function", arg)
}

После получения этого предупреждения я изменил NAMESPACE, чтобы exportPattern("^[^_]+") пытался избежать экспорта функций с подчеркиванием в их имени, но предупреждение сохраняется.

Как мне «переименовать» функцию Rcpp, написанную на C ++?

1 Ответ

5 голосов
/ 29 марта 2019

Это довольно элементарно: когда вы добавляете тег [[Rcpp::export]], вы получаете именно то, что просили: экспортированную функцию. И экспортируется означает глобально видимый .

Если вы этого не хотите, просто удалите тег. У вас все еще есть функция, к которой вы можете обратиться с помощью .Call() обычным способом, и вы можете делать все, что угодно, на уровне R, включая переименование, управление аргументами, проверку и многое другое.

Если вы внимательно посмотрите на (обильную, насколько мне известно) документацию, которую вы увидите в Rcpp Attributes , что вы также можете контролировать, что экспортируется и кому ( т.е. ) у вас могут быть функции, видимые для слоев C ++).

...