【问题标题】:Exporting Data to CSV in R在 R 中将数据导出为 CSV
【发布时间】:2017-12-31 22:20:40
【问题描述】:

我已经合并了一堆 csv 文件,但无法将它们正确导出到一个文件我做错了什么?数据显示在我的控制台中,但我收到一条错误消息,显示“as.data.frame 中的错误。默认(x[[i]],可选 = TRUE): 不能将类 ""function"" 强制转换为 data.fram",

setwd("c:/users/adam/documents/r data/NBA/DK/TEMP")
filenames <- list.files("c:/users/adam/documents/r data/NBA/DK/TEMP")
do.call("rbind",lapply(filenames, read.csv, header = TRUE))

write.csv(read.csv, file ='Lineups.csv')

【问题讨论】:

  • 您确认文件读取正确吗?似乎没有。顺便说一句,使用fwrite 导出文件
  • 好的。我最初认为缺少分配是错误的根源,直到我看到当时是一段尾随的代码。编辑了 Q 并添加了额外的文本。

标签: r csv


【解决方案1】:

您没有将 do.call 函数的结果分配给任何东西。相当常见的 R noob 错误。未能理解函数式编程范式。结果需要分配给 R 名称,否则它们只会被垃圾收集。

错误实际上来自您没有放入代码块中的代码:

write.csv(read.csv, file ='Lineups.csv')

'read.csv' 可能是您对do.call-操作结果的预期名称,但默认情况下它是函数名称而不是您的期望。您可以将do.call-results 分配给名称“read.csv”,但这样做是非常糟糕的做法。选择一个更具描述性的名称,例如“TEMP_files_appended”。

TEMP_files_appended <- do.call("rbind",lapply(filenames, read.csv, header = TRUE))

write.csv(TEMP_files_appended, file ='Lineups.csv')

(我会发现不需要使用header=TRUE 来代替read.csv,因为这是该函数的默认设置。)

【讨论】:

  • 你能告诉我我加入的 CSV 文件被命名为 MB1、MB2、MB3 一直到 MB455。当它加入它们时,它会加入 MB1、MB10、MB100、MB101 等...我如何通过 MB1、MB2、MB3...等加入它们?
  • for (names in paste0("M", 1:455)) {do stuff} 或者do.call(rbind, mget( paste0("M", 1:455) ) )
猜你喜欢
  • 1970-01-01
  • 2021-08-09
  • 2016-08-03
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多