首页 > 解决方案 > 用 dplyr 写 T 而不是 TRUE

问题描述

由于懒惰,我经常T使用TRUE. 在这里,我观察到一个奇怪的行为dplyr,它并不总是被接受。

此示例崩溃 ( incompatible value for ``na.rm`` argument):

df = head(iris)
mutate(df, n = n_distinct(Species, na.rm=T))

但这些例子有效:

mutate(df, n = n_distinct(Species, na.rm=TRUE))
df$n = n_distinct(df$Species, na.rm=T)
mutate(df, m = mean(Sepal.Length, na.rm=T))

当然,这里的简单解决方法是避免缩写和 type TRUE。但这也不起作用:

b = TRUE
mutate(df, n = n_distinct(Species, na.rm=b))

这种行为有什么可以理解的解释吗?莫名其妙的非标准评价?知道要避免什么可以帮助我减少调试代码的时间。

标签: rdplyr

解决方案


这是由于一个错误,现在已修复。感谢 Tidyverse 团队!

https://github.com/tidyverse/dplyr/issues/3686


推荐阅读