5

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

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

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

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

4

1 回答 1

7

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

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)。
于 2020-12-27T14:09:51.807 回答