首页 > 解决方案 > 将 R 列表中的数据帧导出到 .mat 文件中(使用 R 的 R.matlab 包)

问题描述

我在 R 中有一个包含 32 个数据帧的列表,我想将它们导出为可以在 Matlab 中读取的 .mat 文件

这是列表的结构:

> str(listDF_seasons)
List of 32
 $ S09489500:'data.frame':  272 obs. of  3 variables:
  ..$ year : chr [1:272] "1953" "1953" "1953" "1953" ...
  ..$ name : chr [1:272] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:272] NA NA NA 18.1 28 ...
 $ S09489499:'data.frame':  144 obs. of  3 variables:
  ..$ year : chr [1:144] "1953" "1953" "1953" "1953" ...
  ..$ name : chr [1:144] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:144] NA NA NA 29.9 30.8 ...
 $ S09511300:'data.frame':  192 obs. of  3 variables:
  ..$ year : chr [1:192] "1961" "1961" "1961" "1961" ...
  ..$ name : chr [1:192] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:192] NA NA NA 73.4 230.5 ...
 $ S09498400:'data.frame':  164 obs. of  3 variables:
  ..$ year : chr [1:164] "1980" "1980" "1980" "1980" ...
  ..$ name : chr [1:164] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:164] NA NA NA 9.66 8.64 ...
 $ S09498500:'data.frame':  428 obs. of  3 variables:
  ..$ year : chr [1:428] "1914" "1914" "1914" "1914" ...
  ..$ name : chr [1:428] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:428] NA NA NA 573 2726 ...
 $ S09510200:'data.frame':  240 obs. of  3 variables:
  ..$ year : chr [1:240] "1961" "1961" "1961" "1961" ...
  ..$ name : chr [1:240] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:240] NA NA NA 0 29.8 ...
 $ S09490500:'data.frame':  252 obs. of  3 variables:
  ..$ year : chr [1:252] "1958" "1958" "1958" "1958" ...
  ..$ name : chr [1:252] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:252] NA NA NA 217.5 67.8 ...
 $ S09494000:'data.frame':  252 obs. of  3 variables:
  ..$ year : chr [1:252] "1958" "1958" "1958" "1958" ...
  ..$ name : chr [1:252] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:252] NA NA NA 100.1 43.3 ...
 $ S09498503:'data.frame':  108 obs. of  3 variables:
  ..$ year : chr [1:108] "1994" "1994" "1994" "1994" ...
  ..$ name : chr [1:108] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:108] NA NA NA 0.108 4.124 ...
 $ S09497500:'data.frame':  388 obs. of  3 variables:
  ..$ year : chr [1:388] "1924" "1924" "1924" "1924" ...
  ..$ name : chr [1:388] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:388] NA NA NA 200 212 ...
 $ S09510000:'data.frame':  428 obs. of  3 variables:
  ..$ year : chr [1:428] "1914" "1914" "1914" "1914" ...
  ..$ name : chr [1:428] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:428] NA NA NA 299 1414 ...
 $ S09492400:'data.frame':  256 obs. of  3 variables:
  ..$ year : chr [1:256] "1957" "1957" "1957" "1957" ...
  ..$ name : chr [1:256] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:256] NA NA NA 16.6 11.9 ...
 $ S09497980:'data.frame':  164 obs. of  3 variables:
  ..$ year : chr [1:164] "1980" "1980" "1980" "1980" ...
  ..$ name : chr [1:164] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:164] NA NA NA 10.6 11.2 ...
 $ S09497800:'data.frame':  200 obs. of  3 variables:
  ..$ year : chr [1:200] "1959" "1959" "1959" "1959" ...
  ..$ name : chr [1:200] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:200] NA NA NA 73.2 112.5 ...
 $ S09499000:'data.frame':  320 obs. of  3 variables:
  ..$ year : chr [1:320] "1941" "1941" "1941" "1941" ...
  ..$ name : chr [1:320] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:320] NA NA NA 43.4 152.7 ...
 $ S09496500:'data.frame':  176 obs. of  3 variables:
  ..$ year : chr [1:176] "1977" "1977" "1977" "1977" ...
  ..$ name : chr [1:176] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:176] NA NA NA 5.78 45.69 ...
 $ S09508500:'data.frame':  164 obs. of  3 variables:
  ..$ year : chr [1:164] "1945" "1945" "1945" "1945" ...
  ..$ name : chr [1:164] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:164] NA NA NA 226 306 ...
 $ S09508300:'data.frame':  216 obs. of  3 variables:
  ..$ year : chr [1:216] "1967" "1967" "1967" "1967" ...
  ..$ name : chr [1:216] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:216] NA NA NA 0.203 76.637 ...
 $ S09495000:'data.frame':  208 obs. of  3 variables:
  ..$ year : chr [1:208] "1953" "1953" "1953" "1953" ...
  ..$ name : chr [1:208] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:208] NA NA NA 0 0 ...
 $ S09507980:'data.frame':  152 obs. of  3 variables:
  ..$ year : chr [1:152] "1967" "1967" "1967" "1967" ...
  ..$ name : chr [1:152] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:152] NA NA NA 1.8 159.7 ...
 $ S09507500:'data.frame':  212 obs. of  3 variables:
  ..$ year : chr [1:212] "1952" "1952" "1952" "1952" ...
  ..$ name : chr [1:212] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:212] NA NA NA 44.9 46 ...
 $ S09507580:'data.frame':  220 obs. of  3 variables:
  ..$ year : chr [1:220] "1966" "1966" "1966" "1966" ...
  ..$ name : chr [1:220] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:220] NA NA NA 18.5 22.6 ...
 $ S09506000:'data.frame':  128 obs. of  3 variables:
  ..$ year : chr [1:128] "1989" "1989" "1989" "1989" ...
  ..$ name : chr [1:128] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:128] NA NA NA 148 208 ...
 $ S09505800:'data.frame':  224 obs. of  3 variables:
  ..$ year : chr [1:224] "1965" "1965" "1965" "1965" ...
  ..$ name : chr [1:224] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:224] NA NA NA 56.7 145.1 ...
 $ S09505200:'data.frame':  128 obs. of  3 variables:
  ..$ year : chr [1:128] "1989" "1989" "1989" "1989" ...
  ..$ name : chr [1:128] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:128] NA NA NA 6.91 7.29 ...
 $ S09505350:'data.frame':  240 obs. of  3 variables:
  ..$ year : chr [1:240] "1961" "1961" "1961" "1961" ...
  ..$ name : chr [1:240] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:240] NA NA NA 0 75.9 ...
 $ S09504500:'data.frame':  292 obs. of  3 variables:
  ..$ year : chr [1:292] "1948" "1948" "1948" "1948" ...
  ..$ name : chr [1:292] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:292] NA NA NA 33.5 75.1 ...
 $ S09504000:'data.frame':  224 obs. of  3 variables:
  ..$ year : chr [1:224] "1965" "1965" "1965" "1965" ...
  ..$ name : chr [1:224] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:224] NA NA NA 216 441 ...
 $ S09504420:'data.frame':  156 obs. of  3 variables:
  ..$ year : chr [1:156] "1982" "1982" "1982" "1982" ...
  ..$ name : chr [1:156] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:156] NA NA NA 113 241 ...
 $ S09503700:'data.frame':  232 obs. of  3 variables:
  ..$ year : chr [1:232] "1963" "1963" "1963" "1963" ...
  ..$ name : chr [1:232] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:232] NA NA NA 20.2 22 ...
 $ S09512200:'data.frame':  152 obs. of  3 variables:
  ..$ year : chr [1:152] "1961" "1961" "1961" "1961" ...
  ..$ name : chr [1:152] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:152] NA NA NA 0 0 0 0 0 0 0 ...
 $ S09502000:'data.frame':  176 obs. of  3 variables:
  ..$ year : chr [1:176] "1935" "1935" "1935" "1935" ...
  ..$ name : chr [1:176] "winter" "spring" "summer" "fall" ...
  ..$ value: num [1:176] NA NA NA 863 274 ...

我正在使用以下代码将数据帧导出为 mat 文件:

for(i in seq_along(listDF_seasons)){
  name <- paste(names(listDF_seasons)[i],".mat",sep="")
  writeMat(name,x=listDF_seasons[i])
}

此代码需要花费大量时间来导出数据帧。有没有更简单快捷的方法来做到这一点?

在我想遍历 Matlab 中的 .mat 文件之后。也许,有一个选项可以将所有文件放在一起,因为它存在于 R 中的列表。

标签: rlistdataframematlabexport

解决方案


推荐阅读