2

我有一个表数据类型.mat的 matlab文件,我想在 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 列。

所以我的问题是,是否有直接或间接的方式在 R 中导入 MATLAB 表?

4

1 回答 1

1

我相信最好的解决方案是按照您的建议从 MATLAB 将表导出为 CSV 文件

关于某些列的大小为 1*700 数组,我建议以一种整洁的方式重塑您的数据- 其中每一列代表一个变量,每一行代表一个观察值。1X700 数组的 700 列中的每一列是不同的变量,还是同一变量的不同值,可能在不同的时间戳?我的猜测是,您可以将这些数组拆分为 700X1 数组,并为表数据中的相关行添加标识,使用外键将每个新行连接到表中的现有行。

这个“整洁数据”的概念在 MATLAB 中使用较少,通常使用行向量来表示数据,但在 R 中更受欢迎(有关此内容的更多信息,请参见“ tidyverse ”包)。

在 MATLAB中,将每个 1X700 数组拆分为 700X2 个向量 - 一列将是外键 - 数据表中行的标识,第二列应该是变量的值。如果您在原始数据中有 n 个观察值,您现在应该有一个大小为 (nX700, 2) 的数组。将此数组也保存为表格。假设您现在在 MATLAB 中有两个表(原始表和重构数据),请使用writetable将它们导出为 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')

希望这会有所帮助。

于 2018-07-09T12:24:32.590 回答