【问题标题】:Error write_csv thinks data.frame isn't TRUE, write.csv does错误 write_csv 认为 data.frame 不是 TRUE,write.csv 是
【发布时间】:2018-11-08 17:50:05
【问题描述】:

我正在尝试写出一个 .csv 文件。

readr::write_csv 似乎认为我的文件不是data.frame

当我跑步时:

PriceCostRaw <- write_csv(PriceCostRaw, "Price Cost Raw.csv")

它返回此错误:

Error in write_delim(x, path, delim = ",", na = na, append = append, 
col_names = col_names) : 
is.data.frame(x) is not TRUE

其实是data.frame:

> str(PriceCostRaw)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   192 obs. of  7 variables:

> is.data.frame(PriceCostRaw)
[1] TRUE  

utils::write.csv 似乎工作得很好。

为什么write_csv 会发生这种情况?我可以检查其他测试以确保我的数据文件或变量结构发生了奇怪的事情吗?

我无法发布数据本身,因为它是专有的。

【问题讨论】:

  • 如果没有可重现的示例,我只能建议确保您拥有最新版本的 readr 和 R,并在干净的会话中重试。
  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。
  • 试试write_excel_csv
  • 我已经检查过它是 readr 和 R 的当前版本,并且我已经重新启动了我的 R 会话。我再次重新启动会话,重新安装了 readr(具有相同的版本号),这次它工作了。奇怪的。很抱歉给您带来麻烦。
  • 不用担心,每个人都会遇到这种情况。

标签: r readr


【解决方案1】:

在我的系统上重现 write_delim() ... is.data.frame(x) is not TRUE 问题:

library(purrr)
library(dplyr)
library(readr)
library(tidyr)
library(purrrlyr)
iris %>%
    group_by(Species) %>%
    nest() %>%
    by_row(~write_csv(.$data, 
                      path = file.path(tempdir(), paste0(.$Species, ".csv"))))
# Error in write_delim(x, path, delim = ",", na = na, append = append,
#                      col_names = col_names,  : 
# is.data.frame(x) is not TRUE

可能有一种更简单的方法,我试图将数据框写入许多 csv 文件。受到对这个 Stackoverflow 问题的回答的启发: Write multiple data frames to csv-file using purrr::map

write_csv() 替换为基本R 版本write.csv() 时,代码确实有效:

iris %>%
    group_by(Species) %>%
    nest() %>%
    by_row(~write.csv(.$data, 
                      file = file.path(tempdir(), paste0(.$Species, ".csv"))))

成功写入多个 csv 文件,每个文件都有一个物种名称。

【讨论】:

    【解决方案2】:

    write_csv() 中明确指定path = ...

    【讨论】:

      猜你喜欢
      • 2012-02-29
      • 2015-08-27
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多