2016-06-30 2 views
0

Я пишу функцию, которая отфильтровывает некоторые случайные данные из таблицы данных random в соответствии с значением id, но сначала я хочу проверить, действительно ли есть фактические строки данных в таблице данных. Я закончил писать оператор 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

Используйте 'if (nrow (DataTable) == 0)'. Объект все еще существует, даже если он не содержит никаких данных. – lmo

+0

Спасибо, что он работал @lmo –

ответ

1

Я думаю, что вы может использовать 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 равно нулю, вы можете проверить, есть ли какой-нибудь столбец на нем:

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) 

таблица данных не метод, чтобы проверить, если он имеет нулевое значение, пока ,

Смежные вопросы