为什么空数据帧失败了is.null()测试?

Aga*_*ain 22 null r dataframe is-empty

如果我的问题非常基本,请原谅.我创建了一个空数据帧df <- data.frame(),显然数据帧是NULL(空).当我尝试检查数据框是否为空时is.null(df),结果为FALSE.在R NULLemptyR 之间是否有任何区别.在这种情况下,如果数据帧不是NULL,那么空数据帧中的内容以及它何时出现NULL.谢谢

Sti*_*ibu 39

df不是NULL,因为它是一个数据框,因此具有一些已定义的属性.例如,它有一个类.nrow(df)即使结果恰好为零,您也可以使用数据框中的行数.因此,行数也是明确定义的.

据我所知,is.empty在基地R中没有命令.你可以做的是,例如,以下

is.data.frame(df) && nrow(df)==0
Run Code Online (Sandbox Code Playgroud)

这将为空数据帧(即没有行的数据帧)提供TRUE,否则为false.

is.data.frame首先检查的原因是nrow,如果将其应用于除数据框之外的任何其他内容,则可能会导致错误.谢谢&&,nrow(df)只会评估df数据框是否为数据框.

  • 根据你如何定义空,你不能只检查`names(df)`.以下数据框`df <-data.frame(a = numeric(),b = numeric())`没有内容,但仍然定义了名称.所以我的定义会说它是空的,你会说它不是.当然,所有这些都是你想要检查的问题. (3认同)