我有一个带有表数据类型的matlab .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
我想到的一个可能的解决方法是从 matlab 中将表格导出为 .csv 并将其读入 R。但是这个解决方案对我不起作用,因为表格中的某些列是 1x700 数组,而 CSV 中的每一列都是这些列扩展到 700 列。
所以我的问题是,是否有直接或间接的方法在 R 中导入 MATLAB 表?
最佳答案
我认为最好的解决方案是按照您的建议将表从 MATLAB 导出为 CSV 文件。
关于某些列的大小是 1*700 数组,我建议在 tidy way 中 reshape 您的数据。 - 其中每一列代表一个变量,每一行代表一个观察值。 1X700 数组的 700 列中的每一列都是一个不同的变量,还是同一变量的不同值,也许在不同的时间戳?我的猜测是,您可以将这些数组拆分为 700X1 数组,并使用 foreign keys 向表数据中的相关行添加标识。将每个新行连接到表中的现有行。
这种“整洁数据”的概念在 MATLAB 中较少使用,其中通常使用行向量来表示数据,但在 R 中被更多地接受(有关更多信息,请参阅“tidyverse”包)。
在 MATLAB 中,将每个 1X700 数组拆分为 700X2 向量 - 一列将是外键 - 数据表中行的标识,第二列应该是值你的变量。如果原始数据中有 n 个观测值,则现在应该有一个大小为 (nX700, 2) 的数组。将此数组也保存为表格。假设您现在在 MATLAB 中有两个表(您的原始表和您 reshape 的数据),使用 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')
希望这对您有所帮助。
关于r - 如何在 R 中导入 matlab 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51243524/