如何 export/read R 中的空数据框?

How to export/read an empty dataframe in R?

我正在尝试使用 read.csvwrite.csv 将数据帧 export/import 作为 csv 文件,但当 data.frame 为空时我似乎无法处理这种情况。通常,如果我的 data.frame 是空的(即它有列名但没有行名),write.csv 会创建一个空的 *.csv 文件,当我尝试使用 read.csv 读取它时出现错误.任何解决方案?

编辑:

我收到的错误信息是:

我收到以下错误消息:

Error in read.table(file = file, header = header, sep = sep, quote = 
quote,  : 
les premières cinq lignes sont vides : abandon

转换为:前 5 行为空:放弃。

我的代码行是:

write.csv(DF.old,file="DF_old.csv",row.names=FALSE)
DF.old<-read.csv(file="DF_old.csv")

数据框中的数据类型是:

当我使用以下命令时,它可能会变空:

DF.old <- DF.old[DF.old$exceptionnel==T]
DF.old<-DF.old  %>% 
      filter(!id_op %in% to_add$id_op)

最后这是在 Shiny 应用程序中。

dat <- data.frame(A=character(),B=numeric())
write.csv(dat, 'test.csv', row.names=FALSE)
dat2 <- read.csv('test.csv')
head(dat)
head(dat2)

# For Vincent
require(dplyr)
DF <- data.frame(a=c('A','B','C','A','A','B'),b=rnorm(6))  
DF.old <- DF %>% filter (a %in% 'D')
write.csv(DF.old,file="DF_old.csv",row.names=FALSE)
DF.old2<-read.csv(file="DF_old.csv")

我试过了,但没有收到任何错误和警告。请检查您的脚本和 post 您的错误消息。

这至少适用于 data.table

> library(data.table)
> 
> #generate a data table with column name and no rows
> DT <- data.table(column1="value")[column1!="value"]
> 
> #print the data table
> DT
Empty data.table (0 rows) of 1 col: column1
> 
> #write the data table
> fwrite(DT, "test.csv")
> 
> #read the data table
> fread("test.csv")
Empty data.table (0 rows) of 1 col: column1

因此,当用 fwrite 写入并用 fread 读回时,没有错误,并且列名被保留。

处理0列0行的空数据帧时,data.table中的fwrite失败。但是,来自 readrwrite_csv 成功创建了一个空的 csv 文件。

library(readr) # or library(tidyverse)
df <- data.frame()
write_csv(df, "~/empty_df.csv")
# fwrite does not work