如何检查数据表是否有空行?

时间:2016-06-30 14:31:27

标签: r function if-statement

我正在编写根据id值从数据表random中过滤掉一些随机数据的函数,但我首先想要先检查数据表中是否有实际的数据行。我最后写了一个if语句并使用is.null,但它仍然用于条件但它不起作用并最终访问else语句然后给我一个错误。 代码发布在下面,请帮帮我

new.filterID <- function(DataTable,id) {
  if(DataTable == is.null){
    return(print("No Data Available: ",id))
  } else { filtered <- subset(DataTable, ID == id)
    return(aggregate(Value ~ YEAR_WW, filtered, mean))
  }
}
filteredData <- new.filterID(random, 213)

我运行时遇到的错误是

Error in aggregate.data.frame(mf[1L], mf[-1L], FUN = FUN, ...) : 
  no rows to aggregate 

也位于空数据表random

之下
Value   YEAR_WW

1 个答案:

答案 0 :(得分:2)

如果您只想检查行数是否为零,我认为您可以使用nrow

new.filterID <- function(DataTable,id) {
  if(nrow(DataTable) == 0){
   return(print("No Data Available: ",id))
  } else { 
   filtered <- subset(DataTable, ID == id)
   return(aggregate(Value ~ YEAR_WW, filtered, mean))
  }
}
filteredData <- new.filterID(random, 213)

但是,如果你想检查data.table是否为null,你可以检查它上面是否有一些列:

new.filterID <- function(DataTable,id) {
  if(nrow(DataTable) == 0 & length(names(DataTable)) == 0){
   return(print("No Data Available: ",id))
  } else { 
   filtered <- subset(DataTable, ID == id)
   return(aggregate(Value ~ YEAR_WW, filtered, mean))
  }
}
filteredData <- new.filterID(random, 213)

数据表还没有检查它是否为空的方法。