如何 export/read R 中的空数据框?
How to export/read an empty dataframe in R?
我正在尝试使用 read.csv
和 write.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
失败。但是,来自 readr 的 write_csv
成功创建了一个空的 csv 文件。
library(readr) # or library(tidyverse)
df <- data.frame()
write_csv(df, "~/empty_df.csv")
# fwrite does not work
我正在尝试使用 read.csv
和 write.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
失败。但是,来自 readr 的 write_csv
成功创建了一个空的 csv 文件。
library(readr) # or library(tidyverse)
df <- data.frame()
write_csv(df, "~/empty_df.csv")
# fwrite does not work