如何将MATLAB结构加载到R数据框中?

Mat*_*umi 4 import matlab r dataframe matlab-struct

我有一个MATLAB结构,包含许多字段,它们一起描述了100个对多个变量的观察,如下所示(MATLAB输出):

mystruct = 

  fieldA: [100x1 double]
  fieldB: [100x1 double]
  fieldC: [100x1 double]
  fieldD: [100x1 char]
  fieldE: {100x1 cell}
Run Code Online (Sandbox Code Playgroud)

我想将R用于此数据,因此我将结构保存为.mat文件.并使用R.matlab包导入它.因为我是R的新手,以下可能很笨拙,但我可以很好地访问各个字段(R代码):

> f = readMat('myfile.mat')
> data = f$mystruct
> data
  , , 1

      [,1]         
  fieldA Numeric,100  
  fieldB Numeric,100  
  fieldC Numeric,100  
  fieldD Character,100
  fieldE List,100   

> data = data[, , 1]
> df <- data.frame(fieldA = data$fieldA, fieldB = data$fieldB)
Run Code Online (Sandbox Code Playgroud)

好的,所以这里有一个问题:如何推广上述内容,以便为原始结构中的任意数量的字段生成数据框?对于我的5字段示例,我可以手动执行此操作,但是我的下一个数据集有很多字段,我不想全部输入.

按照这个问题,我试图rbind()ldply(),其中构建体悍然尺寸的数据帧(1个变量401个OBS和105个变量401个分别OBS).

Mat*_*umi 7

事实证明,MATLAB单元格数组(fieldE)是作为嵌套列表导入的.使用unlist处理问题:

data = lapply(data, unlist, use.names=FALSE)
df <- as.data.frame(data) # now has correct number of obs and vars
Run Code Online (Sandbox Code Playgroud)

感谢@koekenbakker关键指针!