我正在尝试写出.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
为什么会发生这种情况?我还有其他测试可以检查,以确保我的数据文件或变量结构发生奇怪的事情吗?
我不能发布数据本身,因为它是专有的。
答案 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()