2014-09-20 44 views
0

我有一个名为yphl的向量。矢量全是0和1。计算向量中的元素时,它不加起来

当我这样做:

length(yphl) 

输出为45972

的话,我想找到的0和1的分裂的数字。在通过stackoverflow和r文档查看之后,我很清楚表格函数应该可以工作..但它不会。我做了:

table(yphl) 

输出是:0在6446和1在13553.这显然不加起来。

还有什么我可以尝试吗?矢量是否太长以至于无法计算?很迷茫

任何帮助将不胜感激,谢谢

+4

最有可能在您的向量中缺少值。阅读'?table'上的文档并密切注意各种论点。 – joran 2014-09-20 01:45:09

+0

我会说@Joran的猜测几乎肯定是正确的,但它仍然只是一个猜测。如果你想要一个我们可以验证为真的答案,你需要创建一个[可重现的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-例)。 – MrFlick 2014-09-20 01:48:32

回答

2

由于joran在评论中指出的那样,你可能在矢量NA值。以下是tableuseNA参数如何工作的几个示例。

> set.seed(1) 
> x <- sample(c(0,1,NA), 10, TRUE) 
> x 
# [1] 0 1 1 NA 0 NA NA 1 1 0 

首先,你可以发现,如果向量包含任何NA值与

> anyNA(x) 
# [1] TRUE 

从如果表包含NA值的计数?table

useNA控制:允许只有在计数为正值且甚至为零计数的情况下,值才对应于从不。

允许的值是useNA = c("no", "ifany", "always")

只有当计数为正:

> table(x, useNA = "ifany") 
# x 
# 0 1 <NA> 
# 3 4 3 
> identical(sum(table(x, useNA = "ifany")), length(x)) 
# [1] TRUE 

即使是零数:

> y <- x[!is.na(x)] ## remove NA values from x 
> table(y, useNA = "always") 
# 
# 0 1 <NA> 
# 3 4 0 
> identical(sum(table(y, useNA = "always")), length(y)) 
# [1] TRUE 

从不:

> table(x, useNA = "no") 
# x 
# 0 1 
# 3 4 
> identical(sum(table(x, useNA = "no")), length(x)) 
# [1] FALSE 
相关问题