2013-11-01 40 views
1

如何检查R数据帧是否为空?看看这个代码。我想修改它,所以它不会产生错误或警告。检查数据帧本身是否NA

x = sample(1:2,1) 
d = NA 
if(x == 1) { 
    d = data.frame("h"=c(1,2),"q"=c(2,3)) 
} 

#check if data frame is NA 
if(is.na(d)) { 
    print("d is NA") 
} 

如果x == 1,然后正常工作没有任何警告,否则,如果x == 2下面给出警告

Warning message: 
In if (is.na(d)) { : 
    the condition has length > 1 and only the first element will be used 
+0

是否你的意思是,如果'X == 2'它工作正常?如果你只是想禁止警告,你可以使用'suppressWarnings'。如果'd =矩阵(rep(NA,4),nrow = 2)',你希望函数返回什么? – Hugh

回答

4

无论在主题行的,它看起来像你真的要检查如果d是数据帧或其他东西。

if(is.data.frame(d)) { 
    # do something sensible with a data frame 
} 
else print("d is not a data frame!") 
2

您可以设置dNULL

d <- NULL 

,然后检查is.null(d)

+1

为什么投这个建议? – ndr

+1

+1 - 正是我会建议。 NULL是IMHO更合适的* undefined *变量。 – flodel

+0

我没有downvote,但我的第一读是暗示'd < - NULL'然后'is.null(d)'这是荒谬的(总是为真)。它也不适用于'd = NA'。 – Hugh