我正在编写根据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
答案 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)
数据表还没有检查它是否为空的方法。