Способы читают только выберите столбцы из файла в R? (Счастливая среда между `read.table` и` сканировать?) [Дубликат

StackOverflow https://stackoverflow.com/questions/2193742

Вопрос

Этот вопрос уже имеет ответ здесь:

У меня есть некоторые очень большие файлы данных с разграниченными данными и Я хочу обрабатывать только определенные столбцы в R не принимая время и память, чтобы создать data.frame для всего файла.

Единственные варианты, которые я знаю, read.table что очень расточительно, когда я хочу только пару колонн или scan который кажется слишком низким уровнем для того, что я хочу.

Есть ли лучший вариант, либо с чистым r, либо, возможно, вызывает какое-то другой скрипт оболочки, чтобы сделать извлечение столбца, а затем, используя сканирование или чтение. (Что приводит к вопросу, как вызвать сценарий оболочки и захватить его вывод в R?).

Это было полезно?

Решение

Иногда я делаю что-то вроде этого, когда у меня есть данные в файле разделите вкладку:

df <- read.table(pipe("cut -f1,5,28 myFile.txt"))

Это давайте cut Делайте выбор данных, которые он может сделать, не используя много памяти вообще.

Видеть Читайте только ограниченное количество столбцов Для Pure R версию, используя "NULL" в colClasses аргумент read.table.

Другие советы

Одна возможность использовать pipe() вместо имени файла и иметь awk Или подобные фильтры извлекают только столбцы, которые вы хотите.

Видеть help(connection) для дальше pipe и друзья.

Редактировать: read.table() Может также сделать это для вас, если вы очень явны о Colclasses - значение NULL для данного столбца пропускает столбец AllTogether. Видеть help(read.table). Отказ Таким образом, у нас есть решение в базе R без дополнительных пакетов или инструментов.

Я думаю, что подход Дирк прямо вперед, а также быстро. Альтернатива, которую я использовал, - это загрузить данные в SQLite, которая загружает гораздо быстрее, чем Read.table (), а затем вытащить только то, что вы хотите. Пакет SQLDF () делает это все довольно легко. Вот ссылка к предыдущему переполнению стека, который дает образцы кода для SQLDF ().

Это, вероятно, больше, чем вам нужно, но если вы работаете на очень большой Наборы данных, тогда вы также сможете посмотреть на Пакет HadoopStreaming. который обеспечивает уменьшенную карту рутину, используя Гадость.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top