Этот конкретный файл имеет один объект, inventory
, который является struct
объектом, с множеством различных вещей внутри него. Некоторые из них являются массивами ячеек, другие являются векторами чисел типа double или логики, а пара - это матрицы чисел типа double. Похоже, R.matlab не любит массивы ячеек в структурах, но я не уверен, что вызывает проблемы для R, чтобы загрузить это. По этим причинам я бы вообще рекомендовал избегать отображения структур в Matlab на объекты в R. Он похож на список, и этот можно преобразовать в список, но это не всегда хорошая идея.
Я рекомендую создать новый файл, по одному для каждого объекта, например, ids = inventory.instance_ids
и сохраните каждый объект в отдельный файл .mat или сохраните все из них, кроме объекта инвентаризации, в 1 файл. Еще лучше перейти к тексту, например, через csvwrite
, чтобы вы могли видеть, что создается.
Я понимаю, что это связано с использованием считывателя Matlab to R, но наличие вещей в общем, универсальном формате гораздо более полезно для воспроизводимости, чем приобретение группы различных считывателей для закрытого формата.
В качестве альтернативы вы можете передавать объекты в память через R.matlab
или этот набор функций + интерфейс R / DCOM (в Windows).
Хотя это не относится к использованию R.matlab, я провел много передач данных между R и Matlab в обоих направлениях, и я считаю, что лучше избегать файлов .mat (и, аналогично, файлы .rdat). Мне нравится передавать объекты в память, чтобы я мог осмотреть их с каждой стороны или через стандартные текстовые файлы. Работа с форматами файлов для конкретных приложений, особенно с теми, которые меняются немного и неэффективны (я смотрю на вас, MathWorks), не является хорошим расходом времени. Я ценю людей, которые работают с читателями, но гораздо больше контроля над структурами данных, используемыми в целевом языке, стоит очень много места при использовании простого формата выходного файла. Передача данных в памяти очень удобна, потому что вы можете взаимодействовать с программами, но это может отвлекать, если ваша единственная цель - перемещать данные.