首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pkgdown build_site示例不呈现

pkgdown build_site示例不呈现
EN

Stack Overflow用户
提问于 2022-09-14 19:52:57
回答 1查看 100关注 0票数 0

下面是两个文件中的示例

代码语言:javascript
复制
@examples
x <- mtcars$mpg

some_func_here(x)

some_func_here(x)失败是因为它说没有找到x .

下面是示例失败的两个页面:增额vec

下面是x相同的x工作的示例

所以我不明白它为什么会失败,我甚至不知道从哪里开始寻找。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-15 19:09:12

正如注释中所讨论的,bootstrap_p_vec函数中存在一个bug。它有一个参数.x,但是它检查x是否是数字的。见https://github.com/spsanderson/TidyDensity/blob/a101d7568fbae0a883e7dfaf960236f98cb59fe8/R/vec-bootstrap-p.R#L34

在包中的函数中,变量的搜索顺序如下:

  • 首先查找与名称匹配的局部变量(包括参数)。这会因为错误而失败。
  • 接下来查看函数的环境,即包环境。那里没有定义x,所以这也失败了。
  • 接下来,查看为包声明的导入。这也失败了。
  • 接下来查看基本包,它是隐式导入的。那里没有x
  • 最后,查看用户的搜索列表,从全局环境开始,检查所有附加的包。您的坏代码在全局环境中找到了x,因此您没有得到在正常运行中应该得到的错误。

如果您已经将全局变量命名为xnew,并且没有其他名为x的变量,那么即使在正常运行时,您也会得到错误。

pkgdown::build_site()运行您的代码时,它不遵循相同的规则。它建立了一个假的全球环境,从来没有把它放在搜索列表中。实际上,这意味着它跳过了上面的最后一步,所以它永远找不到x。在我看来,这是一个更好的方法来进行变量搜索,因为用户有时在他们的全局环境中拥有全部垃圾,而且您不希望错误地找到它并使用它。你想要打字造成即时的失败。

如果您在包上运行R CMD check,您应该已经看到一个警告,即bootstrap_p_vec使用全局x。不过,您不会看到这一点,因为您已经在00_global_variables.R中声明了00_global_variables.R,从而抑制了这一警告,实际上是说一切正常(尽管事实并非如此)。

不幸的是,tidyverse中的代码得到了大量关于全局的错误正面警告,因此tidyverse代码几乎别无选择,只能抑制这个错误。他们应该坚持标准的评估,这样您的代码中就不会有这个潜在的错误了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73722496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档