Как импортировать таблицу Matlab в R
У меня есть матлаб .mat
файл с табличным типом данных, который я хочу импортировать в R. Я использую 'readMat' для этого, и R читает его как список.
После этого есть ли способ преобразовать список в формат данных или таблицу в R? Когда я использую as.dataframe
Я получаю следующую ошибку:
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, :
arguments imply differing number of rows: 5, 6, 1
Возможный обходной путь, о котором я подумал, - экспортировать таблицу как.csv из matlab и прочитать ее в R. Но это решение не работает для меня, так как некоторые столбцы в таблице - это массивы 1x700, а в CSV каждый из этих столбцов расширяется до 700 столбцов.
Поэтому мой вопрос заключается в том, существует ли прямой или косвенный способ импорта таблицы MATLAB в R?
1 ответ
Я считаю, что лучшим решением является экспорт таблицы из MATLAB в виде файла CSV, как вы предложили.
Что касается размера определенных столбцов, являющихся массивами 1*700, я бы порекомендовал изменить ваши данные аккуратно - где каждый столбец представляет переменную, а каждая строка представляет наблюдение. Является ли каждый из ваших 700 столбцов массива 1X700 разной переменной, или это разное значение одной и той же переменной, возможно, с другой отметкой времени? Я предполагаю, что вы можете разбить эти массивы на массив 700X1 и добавить идентификацию к соответствующей строке в данных таблицы, используя внешние ключи для соединения каждой новой строки с существующей строкой в таблице.
Эта концепция "аккуратных данных" меньше используется в MATLAB, где обычно используются векторы строк для представления данных, но гораздо более приемлема в R (подробнее об этом см. В пакетах " tidyverse ").
В MATLAB разделите каждый из массивов 1X700 на векторы 700X2 - один столбец будет внешним ключом - идентификатор строки в таблице данных, а вторые столбцы должны быть значением вашей переменной. Если у вас есть n наблюдений в ваших исходных данных, у вас должен быть массив размеров (nX700, 2). Сохраните этот массив как таблицу. Предполагая, что теперь у вас есть в MATLAB две таблицы (исходная таблица и измененные данные), экспортируйте их как CSV с использованием таблицы записи:
writetable(table_1, 'table_1.csv')
writetable(table_2, 'table_2.csv')
Затем в R прочитайте таблицы, используя read_csv:
table_1 <- read_csv('table_1.csv')
table_2 <- read_csv('table_2.csv')
Надеется, что это помогает.