【问题标题】:In R, how to convert a list that contains a list and numeric elements into a data frame [duplicate]在R中,如何将包含列表和数字元素的列表转换为数据框[重复]
【发布时间】:2021-04-11 10:40:31
【问题描述】:

我找到了一个 .MAT 文件,其中包含我希望以 .CSV 格式查看的数据,但我没有 MATLAB 许可证。

幸运的是,有一个 R.matlab 包,带有一个 readMat 函数,可以将 .MAT 文件读入 R。

不幸的是,将 readMat 应用于我的 .MAT 文件的产品不是数据框,我整个上午都在苦苦挣扎,试图弄清楚如何将 readMat 输出转换为数据框,以便我可以导出数据作为 .CSV 文件。

这是我的 R 脚本的开始:

library(R.matlab)
library(tidyr)

cats <- readMat("cats.mat")

head(cats)

这是我在 Rstudio 控制台上看到的内容:

> cats <- readMat("cats.mat")
> 
> head(cats)
$catlist
, , 1

            [,1]         
catname     List,10500  
catgroup    Numeric,10500
flag        Numeric,10500

$catdate
     [,1]         
[1,] "01-Dec-2020"

非常感谢帮助将 readMat 输出转换为数据帧(包含列:catname、catgroup 和 flag)!谢谢! :)

【问题讨论】:

  • 你试过as.data.frame(cats[[1]])吗?如果这不起作用,您能否提供指向cats.mat 的链接?
  • @Ian Campbell - 谢谢!!这些工作的组合(它创建了包含每列的全部内容的列名——以“structure.c”开头——但数据是以所需的格式提取的,这就是我所需要的)。非常感谢您的时间和专业知识!
  • 很高兴它对你有用。也许考虑用对你有用的方法来回答你自己的问题。
  • 会做 - 现在正在努力。

标签: r list matlab dataframe csv


【解决方案1】:

解决方案(感谢 Ian Campbell):

注意:列名有问题,但数据已成功提取并导出为 .CSV 文件!

library(R.matlab)
library(tidyr)

cats <- readMat("cats.mat")

cats2 <- cats$catlist

cats3 <- lapply(cats2, unlist, use.names=TRUE)

cats_for_export <- as.data.frame(cats3)

write.csv(cats_for_export, file="cats.csv")

【讨论】:

  • 看起来不错。您也可以使用左侧的灰色复选标记来接受您自己的答案。
  • 谢谢。我试着接受我的回答,但上面有一个计时器,我得等几天。 “您可以在 2 天内接受自己的答案。”
  • 嗯,我不知道。感谢您的提醒。
猜你喜欢
  • 1970-01-01
  • 2017-07-05
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
  • 2022-12-11
  • 2016-02-14
  • 2021-01-11
相关资源
最近更新 更多