如何解决为什么 sapply() 和 options() “不受欢迎”?
Jim Hester 的“lintr”包包含许多不同的 R 短绒。README for the package 以这种方式描述其中一个短绒:
undesirable_function_linter:
报告使用不良功能,例如选项或 sapply 并提出替代方案。
我很惊讶。我已经使用 R 很多年了,而且我已经使用 options()
和 sapply()
很多年了。是什么让他们不受欢迎?还有更好的选择吗?
我知道 getOption()
,但它不能代替 options()
。我还了解 *apply()
变体、Map()
和 Tidyverse map
函数。 Tidyverse 函数在我看来总体上比 sapply()
或 Map()
更好——我更喜欢 Tidyverse 函数中的默认值和参数顺序——但我没想过调用 { {1}}“不受欢迎。”
解决方法
如果您查看该函数的标题,
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
中所述)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。