是否有合理理由要覆盖R包中的全局选项?

时间:2019-08-23 13:45:37

标签: r r-package

我只是在GitHub上随机地浏览一个相对较新的小型R包,而我所看到的第一件事就是

options(scipen = 999)

哪个给我敲响了警钟。他们多次这样做,包括

options(stringsAsFactors = FALSE)

之所以困扰我,是因为它可能给用户带来意想不到的调试行为,尤其是对于read.csv()这样的通用函数,其中某些人可能依赖于默认为因子的字符串

> dat = read.csv("a.csv")
> str(dat)
'data.frame':   2 obs. of  3 variables:
 $ a: int  1 2
 $ b: num  NA 3.5
 $ c: Factor w/ 2 levels "Hello","my": 1 2
> chg_saf = function() {
+   options(stringsAsFactors = FALSE)  
+ }
> chg_saf()
> dat = read.csv("a.csv")
> str(dat)
'data.frame':   2 obs. of  3 variables:
 $ a: int  1 2
 $ b: num  NA 3.5
 $ c: chr  "Hello" "my"

如果他们至少尝试在功能结束时恢复默认状态,可能不会打扰我很多,但是即使那样也会打扰我,因为由于错误而导致的功能过早退出会阻止状态从恢复中恢复(我实际上遇到了setwd有此问题的软件包...)。

现在,我计划向他们的GitHub问题跟踪器提交一个问题,礼貌地要求他们不要这样做。但是在我这样做之前,它激起了我的好奇心。 在某些情况下,是否有适当的情况可以覆盖用户不知道的R包中R的全局选项?

0 个答案:

没有答案