Сохраните файл больших данных в R для последующей загрузки в Matlab

Я создал числовую матрицу 300000 x 7 в R и хочу работать с ней как в R, так и в Matlab. Однако я не могу создать файл, хорошо читаемый для Matlab. При использовании команды save() с файлом=xx.csv вместо этого распознаются 5 столбцов; с расширением .txt все данные открываются в одном столбце. Я также пытался с пакетами ff и ffdf управлять этими большими данными (я предполагаю, что проблема идентификации R строк и столбцов при сохранении как-то связана с этим), но я не знаю, как сохранить их в читаемом формате для Matlab после.

Примером этого набора данных может быть:

output <- matrix(runif(2100000, 1, 1000), ncol=7, nrow=300000)


person user3032330    schedule 21.01.2014    source источник
comment
Вы пробовали write.table(matrix, file = csv_name.csv, sep=,)? Я уже использовал его для файлов столь же больших размеров. Трудно понять проблему без воспроизводимого примера.   -  person Lucas Fortini    schedule 21.01.2014
comment
save сохраняет объекты R в родном двоичном формате R, поэтому я удивлен, что вы получили что-то из этого в Matlab. Смена расширения не поможет. Прочтите help(save) для информации.   -  person Spacedman    schedule 21.01.2014
comment
Мой ответ решил вашу проблему? Если это так, я был бы признателен, если бы вы приняли его, иначе я буду рад помочь, если вам нужно больше относительно вашего первоначального вопроса.   -  person fotNelton    schedule 22.01.2014


Ответы (1)


Если вы хотите работать как с R, так и с Matlab, и у вас есть такая же большая матрица, как ваша, я бы предложил использовать файл Пакет R.matlab. Пакет предоставляет методы readMat и writeMat. Оба метода читают/записывают двоичный формат, понятный Matlab (а через R.matlab и R).

Установите пакет, набрав

install.packages("R.matlab")

Впоследствии не забудьте загрузить пакет, например. от

library(R.matlab)

Документация readMat и writeMat, доступная через ?readMat и ?writeMat, содержит простые примеры использования.

person fotNelton    schedule 21.01.2014
comment
Да, это сработало отлично. На самом деле, я искал код, который выложил Лукас. Раньше я пробовал использовать sep= или \t, но ни один из них не работал у меня. Однако, делая то, что вы предлагаете, мне не нужно хранить данные в файле .csv, поэтому я не буду тратить время на преобразование файлов. Я очень благодарна за ваш пост! - person user3032330; 22.01.2014
comment
В любом случае использование двоичного формата должно быть быстрее. Если вы не возражаете, не могли бы вы рассмотреть принятие ответа< /а>? ;-) - person fotNelton; 22.01.2014