Cloud2016 如果是曾国藩来写这个函数,恐怕会是这种天然呆风格:
ruler <- function(width = getOption("width")) {
x <- seq_len(width)
y <- rep('-', width)
y[x %% 5 == 0] <- '+'
y[x %% 10 == 0] <- seq_len(width %/% 10) %% 10
cat(y, "\n", sep = "")
cat(x %% 10, "\n", sep = "")
}
ruler()
你用 ifelse()
当然也是极好的。此处用 dplyr::case_when()
在我看来就属于杀鸡用牛刀了,用一个笨重的依赖完成了一个细枝末节的任务,我觉得不值当。
净土宗在包的依赖问题方面确实是有不少问题,它的那些不靠谱的反对党还煞有介事地搞了个踢馆的网站名曰 Tinyverse:http://www.tinyverse.org 但基本上都是说了些废话(谁还不知道引入依赖的坏处?)、给自己的个人网站打广告(独孤求赞)、以及展示他们自己的确认偏误(看!Tidyverse 又搞砸了吧)。这个问题不能一概而论,不同人的平衡点不一样:你是选择臃肿而方便,还是选择轻量而麻烦?就以上的 ruler()
函数而言,引入 dplyr 当然是毫无必要;但如果在一个项目中大量使用了 dplyr 包中的其它主打函数,那么顺手用一下 case_when()
也无妨。就是看引入依赖的动机和目的是什么了。我一般倾向于用基础 R 函数,如果有什么杂项任务需要完成,我就写个零依赖的函数丢到 xfun 包中,当然偶尔也需要用到依赖,但 xfun 包本身没有硬性依赖,依赖按需安装就好了。ruler()
这种函数就适合放在这般乌合之众的包中。