2016-10-11 2 views
1

Я перебираю список адресов адресов в path. что-то вроде "ProcessedFiles/2014_12/XCP2P018PORTFO_20141224.CSV"Как пропускать наборы данных с неправильным количеством столбцов в цикле?

Цель состоит в том, чтобы собрать много CSV-файлов в один большой фрейм данных. У меня протекающий:

OUTPUT <- data.frame() 

for (i in 1:nrow(paths)){ 


    PORT_TMP <- read.table(as.character(paths[i,]), sep = ";", header = TRUE, row.names = NULL) 


    OUTPUT <- rbind(OUTPUT, PORT_TMP) 

    cat(i) 

} 

Проблема возникает, когда некоторые данные кадр не имеет одинаковое количество столбцов, которое останавливает цикл и вызывает ошибку. В моем 1000+ длинном списке есть 1 или 2 файла с неправильным количеством столбцов. Таким образом, моя петля терпит неудачу, когда i rbind(). Я бы хотел пропустить эти наборы данных. Правильное число - 47, поэтому я пытаюсь что-то вроде:

OUTPUT <- data.frame() 


    for (i in 1:nrow(paths)){ 


     PORT_TMP <- read.table(as.character(paths[i,]), sep = ";", header = TRUE, row.names = NULL) 

     if ncol(PORT_TMP) == 47 { 

     OUTPUT <- rbind(OUTPUT, PORT_TMP) 
     } 

     cat(i) 

    } 

Я получаю некоторые ошибки, а не pro в операторах if. если кто-то может помочь в этой потенциально простой проблеме, я бы очень признателен.

+0

он работает сейчас, мы увидим, если он скачет! почти это было. Спасибо. –

ответ

0

Как ответили в комментариях:

if (ncol(PORT_TMP) == 47) 
Смежные вопросы