为什么空数据帧无法通过 is.null() 测试?

Why does an empty dataframe fail an is.null() test?

如果我的问题很基础,请原谅。 我通过 df <- data.frame() 创建了一个空数据框,显然该数据框为 NULL(空)。当我尝试通过 is.null(df) 检查数据框是否为空时,结果为 FALSE。 R 中 NULLempty 之间有什么区别吗?在这种情况下,如果数据框不是 NULL ,那么空数据框中的内容是什么,什么时候是 NULL.谢谢

data.frame() 创建一个具有 数据框 class 的对象。因为对象 存在 is.null 将 return FALSENULL 变量没有 class 也没有内容。

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

据我所知,基本 R 中没有 is.empty 命令。您可以做的是,例如,以下

is.data.frame(df) && nrow(df)==0

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

首先检查 is.data.frame 的原因是 nrow 如果应用于除数据框之外的任何其他内容,可能会导致错误。感谢 &&nrow(df) 仅在 df 是数据框时才会被评估。

以上答案正确,is.na 和 is.null 无法检测到 R 中的空值。这就是我计算数据框中有多少空值的方法'df' 在这种情况下。

is.na(df[df =='']) <- TRUE # 这只是将 NA 替换为 df 中的空值。

sum(is.na(df)) # 会让您了解 'df' 中有多少个空值。

希望这对您有所帮助。