代码之家  ›  专栏  ›  技术社区  ›  Agaz Wani

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

  •  25
  • Agaz Wani  · 技术社区  · 11 年前

    如果我的问题很基本,请原谅。 我创建了一个空数据帧 df <- data.frame() 并且显然数据帧是NULL(空)。当我试图检查数据帧是否为空时 is.null(df) ,结果为FALSE。两者之间有什么区别吗 NULL empty 在这种情况下,如果数据帧不是 无效的 ,然后是空数据帧中的内容以及何时 无效的 谢谢

    3 回复  |  直到 11 年前
        1
  •  44
  •   Stibu    10 年前

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

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

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

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

    检查的原因 is.data.frame 首先是 nrow 如果应用于数据帧以外的任何对象,则可能会导致错误。幸亏 && , n流量(df) 仅在以下情况下进行评估 东风 是数据帧。

        2
  •  0
  •   ahmohamed    11 年前

    data.frame() 创建具有 数据帧 班因为对象 存在 , is.null 将返回 错误的 A. NULL 变量没有类和内容。

        3
  •  -2
  •   Zhuang-Fang Yi    10 年前

    上面的答案是正确的,is.na和is.null无法检测到R中的空值。在这种情况下,我将使用此方法来计算数据帧“df”中有多少空值。

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

    sum(is.na(df))可以让您知道“df”中有多少空值。

    希望这有帮助。