【问题标题】:How to make write a data frame to a csv file?如何将数据框写入 csv 文件?
【发布时间】:2020-05-23 03:25:56
【问题描述】:

我正在制作一个数据框,其中一列是专业,第二列是专业的课程列表。

df <- data.frame(majors = majors) df[,"courses"] <- courses

其中专业是一个向量,课程是一个列表列表。当我尝试使用

进行写作时
write.csv(df,"Majors_and_Courses.csv", row.names = FALSE)

我收到一条错误消息,提示“write.table 中的错误(df,“Majors_and_Courses.csv”,row.names = FALSE,: 'EncodeElement' 中未实现的类型 'list'"

【问题讨论】:

  • 您需要取消列出该列表。 df[,"courses"] &lt;- unlist(courses)。由于数据框中存在列表数据类型,错误正在发生。该列表不能直接带入 csv。
  • 此时取消列出会改变对象的长度 - 因此,连接将失败。

标签: r dataframe


【解决方案1】:

我怀疑你正在创建一个 data.table 或类似的,因为 df[,"courses"] &lt;- courses 否则会给你一个警告。

使用 data.table 的解决方案:

library(data.table)
dt <- data.table(majors = c("John", "Lisa", "Tim"))
courses <- list(a = list("m","n","o"), b = list("p", "q", "r"), c = list("s", "t", "u"))
dt[,"courses"] <- courses
dt$courses <- vapply(dt$courses, paste, collapse = "; ", character(1L))
write.csv(dt, "Majors_and_Courses.csv", row.names = FALSE)

预先取消列出会改变长度,添加到数据表后取消列出会导出“c(...)”结构。 您可以按照自己的意愿更改嵌套列表的分隔符,但我不鼓励您重复使用要导出的文件的分隔符(在本例中为“,”)以避免混淆。

【讨论】:

    猜你喜欢
    • 2020-06-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    相关资源
    最近更新 更多