Открывайте большие файлы с помощью R - PullRequest
1 голос
/ 26 мая 2011

Я хочу обработать файл (1.9GB), который содержит 100.000.000 наборов данных в R. На самом деле я хочу иметь только каждый 1000-й набор данных.Каждый набор данных содержит 3 столбца, разделенных вкладкой.Я пытался: data <- read.delim ("file.txt"), но R не смог управлять всеми наборами данных одновременно.Могу ли я сказать R напрямую загружать только каждый 1000-й набор данных из файла? </p>

После прочтения файла я хочу связать данные столбца 2. Можно ли напрямую связать число, записанное в столбце 2?Возможно ли чтение файла построчно, без загрузки всего файла в память?

Спасибо за вашу помощь.

Свен

Ответы [ 3 ]

7 голосов
/ 27 мая 2011

Вы должны предварительно обработать файл с помощью другого инструмента перед чтением в R.

Чтобы записать каждую 1000-ю строку в новый файл, вы можете использовать sed , например:

sed -n '0~1000p' infile > outfile

Затем прочитайте новый файл в R:

datasets <- read.table("outfile", sep = "\t", header = F)
6 голосов
/ 27 мая 2011

Возможно, вы захотите взглянуть на руководство , посвященное R Data Import / Export .

Наивные подходы всегда загружают все данные. Вы этого не хотите. Вам может понадобиться другой скрипт, который читает построчно (написанный на awk, perl, python, C, ...) и выдает только каждую N-ю строку. Затем вы можете прочитать вывод этой программы непосредственно в R через канал - см. Справку по Connections.

В целом, очень большие настройки памяти требуют некоторого понимания R. Будьте терпеливы, вы получите это на работу, но опять же, наивный подход требует большого количества оперативной памяти и 64-битной операционной системы.

1 голос
/ 27 мая 2011

Может быть, пакет Колбиколь может быть полезным для вас.

...