2013-09-18 5 views
0

У меня есть файл csv с тремя строками. Первая строка имеет 7 integeralue, вторая имеет 5 и thisrd 3. Я хочу прочитать эти данные с помощью colbycol, а затем запустить fft на каждом из столбцов. но на первом этапе, если я использую этот commadn:Чтение большого файла csv с использованием colbycol

cbc.read.table<-cbc.read.table("c:\\users\\Babak\\Desktop\\test1.csv",header=FALSE, sep=",") 

Я получаю эту ошибку:

Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : 
    line 2 did not have 7 elements 

мой вопрос, можно ли читать CSV-файл с colbycol

UPDATE Моя CSV-файл содержит только:

14,25,83,64,987,45,78 
15,45,32,14,4,8 
14,89,14,87,37,456 
+0

Я предполагаю, что эти три линии только заголовок файла (в противном случае, он не будет квалифицироваться как «большой»): Вы можете пропустить их, установив 'skip' аргумент к ненулевому значению. –

+0

@VincentZoonekynd Я сам создал файл csv, а не заголовок. Я обновил свой пост. Вы можете увидеть содержимое моего файла csv – TangoStar

+0

Связанный вопрос: http://stackoverflow.com/questions/5402758/importing-a-txt-file-when-number-of-columns-varies –

ответ

1

Действительно ли ваш файл достаточно большой, чтобы использовать cbc.read.table? Я имею в виду, вы пробовали и сравнивали базовые функции и находили их серьезно желающими? База read.table (ниже) выполнит работу даже для довольно больших файлов.

Если вы хотите обработать действительно огромный файл, this question and its answers описать ряд стратегий в дополнение к colbycol, которые, возможно, более проверенного и испытанного, чем этот пакет (не неуважение к colbycol автору, конечно, прием на комментарий).

rawtext <- "14,25,83,64,987,45,78 
15,45,32,14,4,8 
14,89,14,87,37,456" 

txt <- read.table(textConnection(rawtext), 
        header = FALSE, 
        sep = ",", 
        fill = TRUE) 

Отдает:

txt 
    V1 V2 V3 V4 V5 V6 V7 
1 14 25 83 64 987 45 78 
2 15 45 32 14 4 8 NA 
3 14 89 14 87 37 456 NA 
> 
+0

Это почти 366 МБ csv-файла. он содержит 7500 столбцов и 10241 строки. Я использовал 'apply' для запуска fft для каждого столбца, но для этого недостаточно памяти, теперь я хочу прочитать каждый столбец и запустить fft на нем. поэтому я решил использовать 'colbycol'. Что вы имеете в виду? – TangoStar

+1

Если вы предварительно задаете число строк и типы данных каждого столбца с аргументами 'nrow' и' colClasses' 'read.table', R может предварительно выделить результирующий' data.frame' и быстро проанализировать файл и эффективно. Я прочитал 400 MB csv-файлы с 40 столбцами и 500 000 строк таким образом без проблем. – Backlin

+0

Ican successfuly реализует это с помощью 'colClasses' и' nrows' с помощью этой команды: 'temptb = read.table (" c: \\ Path \\ xxx.csv ", header = FALSE, sep =", ", colClasses =" numeric ", nrows = 10000) [, 1]', но это очень медленно. как я уже сказал, у меня есть 10240 строк и 7500 столбцов для выполнения вышеуказанной команды. Мне нужно 2 минуты. Это нормально? как я могу сделать это лучше? – TangoStar

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