【发布时间】:2011-08-11 18:42:09
【问题描述】:
我使用 sum(is.na(my.df)) 检查我的数据框是否包含任何 NA,这符合我的预期,但 sum(is.nan(my.df)) 没有按我的预期工作。
> my.df <- data.frame(a=c(1, 2, 3), b=c(5, NA, NaN))
> my.df
a b
1 1 5
2 2 NA
3 3 NaN
> is.na(my.df)
a b
[1,] FALSE FALSE
[2,] FALSE TRUE
[3,] FALSE TRUE
> is.nan(my.df)
a b
FALSE FALSE
> sum(is.na(my.df))
[1] 2
> sum(is.nan(my.df))
[1] 0
哦,亲爱的。
行为不一致是否有原因?是因为缺乏执行,还是故意的? is.nan(my.df) 的返回值是什么意思?是否有充分的理由不在整个数据框上使用is.nan()?
在is.na( ) 和is.nan( ) 的文档中,参数类型似乎相同(尽管它们没有专门列出数据框):
is.na(): x 要测试的 R 对象:默认方法处理原子向量、列表和对列表。
is.nan(): x R 待测对象:默认方法处理原子向量、列表和对列表。
【问题讨论】:
-
不知道为什么会出现明显的不一致,但对于
is.nan的逐个元素比较,请尝试apply(my.df, c(1,2), is.nan)
标签: r