该表包括R> 3.4.0中的显式NA

Ale*_*ock 3 r na tidyverse

编辑:公认的答案帮助我摆脱了眼界;这种变化毕竟是一种改进,并不令人讨厌。

table现在,在的帮助文件中:

非因子参数a通过factor(a,exclude = exclude)强制。从R 3.4.0开始,请注意不要对排除的值进行计数(以前将它们包括在NA计数中)。

这很烦人。在此之前,您可以调用table(x, exclude = NULL)并获得对NA数值数量的明确确认。现在,如果没有,则不会被告知。观察:

vec_with_no_nas <- c("A", "B", "B", "C")
vec_with_nas <- c("A", "B", NA, "C")

table(vec_with_no_nas)
table(vec_with_no_nas, exclude = NULL)

table(vec_with_nas)
table(vec_with_nas, exclude = NULL)
Run Code Online (Sandbox Code Playgroud)

这给出了输出:

> table(vec_with_no_nas)
vec_with_no_nas
A B C 
1 2 1 
> table(vec_with_no_nas, exclude = NULL)
vec_with_no_nas
A B C 
1 2 1 
Run Code Online (Sandbox Code Playgroud)

看到?没有明确确认零个NA。

我真正想要的是类似旧行为的东西:

> table(vec_with_no_nas, exclude = NULL)
vec_with_no_nas
A B C <NA>
1 2 1 0
Run Code Online (Sandbox Code Playgroud)

FWIW,如果向量确实具有NA值,table(x, exclude = NULL)则会告诉您:

> table(vec_with_nas)
vec_with_nas
A B C 
1 1 1 

> table(vec_with_nas, exclude = NULL)
vec_with_nas
   A    B    C <NA> 
   1    1    1    1 
Run Code Online (Sandbox Code Playgroud)

我在基地和基地工作tidyverse。是否有table可以直接确认没有NA的直接替换产品?

lmo*_*lmo 7

您可以尝试将useNA参数设置为“ always”。在R 3.2.5中,

table(vec_with_no_nas, useNA="always")
Run Code Online (Sandbox Code Playgroud)

即使不存在NA,也会添加NA列。

vec_with_no_nas
   A    B    C <NA> 
   1    2    1    0 
Run Code Online (Sandbox Code Playgroud)

3.4.0(和3.2.5)的在线帮助文​​件说

useNA控制表是否包含NA值计数。

因此,该参数似乎确实可以直接解决您要执行的操作。exclude参数允许用户直接从表输出中删除因子变量的级别。

table(vec_with_no_nas, exclude="A")
vec_with_no_nas
B C 
2 1 
Run Code Online (Sandbox Code Playgroud)

这比从构造的表对象中删除不需要的级别更干净。

注意:
在线3.4.0帮助文件提到了同时使用exclude和useNA参数的病理情况,并且还提供了一个值得进一步探讨的示例。