R:检查DataFrame中的有限值

时间:2018-03-12 15:41:39

标签: r

我需要检查数据帧是否为“空”(在数据帧包含零有限值的意义上为“空”。如果存在有限值和非有限值的混合,则为不应被视为“空”)

参考How to check a data.frame for any non-finite,我想出了一个几乎可以达到这个目标的行代码

nrow(tmp[rowSums(sapply(tmp, function(x) is.finite(x))) > 0,]) == 0

其中tmp是一些数据帧。

此代码适用于大多数情况,但如果数据框包含单行,则会失败。

例如,上面的代码适用于

tmp <- data.frame(a=c(NA,NA), b=c(NA,NA)) OR tmp <- data.frame(a=c(3,NA), b=c(4,NA))

但不是,

tmp <- data.frame(a=NA, b=NA)

因为我认为rowSums至少需要两行

我查了一些其他帖子,例如https://stats.stackexchange.com/questions/6142/how-to-calculate-the-rowmeans-with-some-single-rows-in-data,但我仍然无法找到解决问题的方法。

我的问题是,是否有任何干净的方法(即避免使用循环,理想情况下是一个班轮)来检查任何数据帧的“空”?

由于

1 个答案:

答案 0 :(得分:2)

如果要检查所有列,则可以执行

all(sapply(tmp, is.finite))

我们使用all而不是rowSums技巧,因此我们不必担心保留矩阵。