为什么sapply()和options()“不受欢迎”?

Jim Hester 的“lintr”包包含许多不同的 R linter。该包的README以这种方式描述了其中一个linter :

undesirable_function_linter: 报告不受欢迎的功能的使用,例如选项或 sapply 并提出替代方案。

我很惊讶。我一直在使用的R用很多年了,我一直在使用options(),并sapply()多年。是什么让他们不受欢迎?还有更好的选择吗?

我知道getOption(),但它不能代替options()。我还了解*apply()变体Map()、 和 Tidyversemap函数。总体而言,Tidyverse 函数对我来说似乎比sapply()or Map()- 我更喜欢 Tidyverse 函数中的默认值和参数顺序 - 但我不会想到称之为sapply()“不受欢迎”。

回答

如果您查看该函数的标题,

function(fun = default_undesirable_functions)

您会看到它在 中记录了它的选择default_undesirable_functions,如果您查看该对象,您将看到:

...
$options
[1] "use withr::with_options()"
...
$sapply
[1] "use vapply() or lapply()"
...

从替代方案中,您可以猜测为什么作者认为这些功能是“不可取的”:

  • options()不好,因为它具有全球性的副作用。该withr::with_options()替代保存到本地的选项进行任何更改。
  • sapply()不好是因为vapply()更安全(如 中所述?sapply)。

以上是为什么sapply()和options()“不受欢迎”?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>