错误write_csv认为data.frame不是TRUE,write.csv认为

时间:2018-11-08 17:50:05

标签: r readr

我正在尝试写出.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为什么会发生这种情况?我还有其他测试可以检查,以确保我的数据文件或变量结构发生奇怪的事情吗?

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

2 个答案:

答案 0 :(得分:0)

在系统上重现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文件,每个文件都有一个物种名称。

答案 1 :(得分:0)

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