【问题标题】:Undocumented code objects warning for functions I don't want to export我不想导出的函数的未记录代码对象警告
【发布时间】:2019-08-20 13:31:27
【问题描述】:

我正在尝试用 Rcpp 编写一个 R 包。除了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;
}

问题是我想在导出到 R 时将其“重命名”为 shiny.function,所以在 R/shiny_function.R 我有

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

收到此警告后,我将NAMESPACE 修改为exportPattern("^[^_]+"),以避免导出名称中带有下划线的函数,但警告仍然存在。

如何“重命名”用 C++ 编写的 Rcpp 函数?

【问题讨论】:

  • shiny.function之前有一些roxygen2代码吗?
  • @StéphaneLaurent 不,我不知道。我正在编写一个只导出 2 个函数的小包,所以我想让事情变得简单易行。
  • // [[Rcpp::export(shiny.function)]] 怎么样?
  • 抱歉,上下文不够。使用Rcpp::compileAtributes 生成对这些函数的调用,可以在RcppExports.cpp 中找到。

标签: c++ r namespaces rcpp r-package


【解决方案1】:

这是非常基本的:当您添加标签 [[Rcpp::export]] 时,您会得到您所要求的:一个导出的函数。而exported的意思是全局可见。

如果你不想这样,只需删除标签。您仍然可以通过.Call() 以通常的方式处理一个函数,并且您可以在 R 层做任何您想做的事情,包括重命名、参数控制和验证等等。

如果您仔细查看(我知道有很多)文档,您将在 Rcpp 属性 小插图中看到,您还可以控制导出的内容和对象(ie em> 你可以让函数对 C++ 层可见)。

【讨论】:

  • 似乎不起作用。现在我收到Found no calls to: ‘R_registerRoutines’, ‘R_useDynamicSymbols’ 和It is good practice to register native routines and to disable symbol search.
  • 好吧,您选择了手动操作,现在您必须 - 请参阅精美手册 Writing R Extensions 了解如何操作。或者,如果您想聪明一点,只需将导出标签放回去,让它自动生成,然后在关闭标签之前将其复制到另一个文件。简而言之,“注册!= 导出”。
  • sigh 我暂时不使用 roxygen2(但我想我必须这样做)。 “让它自动生成,然后在关闭标签之前将其复制到另一个文件”是什么意思?您是要我在删除// [[Rcpp::export]] 行之前将自动生成的RcppExports.cpp 复制到RcppExports.cpp.bak 吗?
  • 也许您需要放慢速度并阅读更多内容。我从未暗示或明确提及roxygen2。它不是 Rcpp 工具链的一部分,也不是必需的(尽管许多人将它用于某些任务;如果您查看 StackOverflow 问题,您还会发现它也让很多人感到困惑,因为它也涉及我提到的一些文件——而且是我不推荐它用于这些任务的原因)。
  • ==:-) 我听到了,但自 1990 年代以来,我自己也一直在阅读、重新阅读和重新阅读 Writing R Extensions。就是这样。除非有人 坐下来写出更好的文档,否则它不会有所改善。也许您的使命是编写这些文档...
猜你喜欢
  • 2019-06-16
  • 1970-01-01
  • 1970-01-01
  • 2014-08-17
  • 2016-09-21
  • 1970-01-01
  • 2013-04-28
  • 2017-10-23
  • 2014-08-15
相关资源
最近更新 更多