r - 如何在 R 中导入 matlab 表

标签 r matlab import mat-file matlab-table

我有一个带有表数据类型的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/

相关文章:

java - Eclipse 组织静态导入

r - 在 R 中使用顺序(colSums())

r - geom_text 中的数学符号错误

r - geom_text() 的边界位置

c++ - 特征:访问矩阵中的分散元素

python - 来自 matlab 的 python 中的数组操作/切片

php - 使用相同库的多个文件的Python导入技术

python - 打开外部代码时Rpy2解析错误

javascript - 从网页获取 javascript 的结果

Java导入类System