发布于 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代码几乎别无选择,只能抑制这个错误。他们应该坚持标准的评估,这样您的代码中就不会有这个潜在的错误了。
https://stackoverflow.com/questions/73722496
复制相似问题