Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用dplyr写T而不是TRUE_R_Dplyr - Fatal编程技术网

用dplyr写T而不是TRUE

用dplyr写T而不是TRUE,r,dplyr,R,Dplyr,由于懒惰,我经常用缩写T表示TRUE。在这里,我观察到dplyr的一种奇怪行为,它并不总是被接受 此示例崩溃(`na.rm``参数的值不兼容): 但这些例子是有效的: 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)) 当然,这里的简单修复方法是避免缩写和键入TRUE。但这也不起作用:

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

此示例崩溃(`na.rm``参数的值不兼容):

但这些例子是有效的:

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))
当然,这里的简单修复方法是避免缩写和键入
TRUE
。但这也不起作用:

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

对这种行为有什么可以理解的解释吗?非标准评估?知道要避免什么会帮助我花更少的时间调试代码。

始终建议使用全名而不是缩写,如
T
F
,因为当存在名为
T
F
的对象时,这可能会导致问题。但是,我们不能指定像
TRUE
这样的保留字作为名称

TRUE <- 1:5

TRUE这是由于一个bug造成的,现已修复。感谢Tidyverse团队


最好说
TRUE
而不是
T
。好的,但是最后一个例子呢?可能你需要
变异(df,n=n_distinct(Species,na.rm=!!b))
,因为它可能会在环境中寻找对象。
评估查找环境之外的对象或类似的
变异(df,n=n_distinct(Species,na.rm=!!T))
因为它正在查找名为
T
的对象,感谢您的澄清和提及爆炸。我仍然不明白为什么
n_distinct
无法访问基本环境中的
t
。在这两者之间,我注意到
f=n_是不同的;变异(df,n=f(物种,na.rm=T))
确实有效。。。这更令人费解。
TRUE <- 1:5
`TRUE` <- 1:5 # but it is not recommended
out1 <- mutate(df, n = n_distinct(Species, na.rm=!!T))
out2 <- mutate(df, n = n_distinct(Species, na.rm=!!b))
out3 <- mutate(df, n = n_distinct(Species, na.rm=TRUE))
identical(out1, out3)
#[1] TRUE
identical(out1, out2)
#[1] TRUE