使用时write.csv
,可以使用删除引号,从而显着减小文件大小(对于大型数据集,大约减少25%)quote=FALSE
。但是,read.csv
如果数据中包含逗号,则可能导致故障。例如:
x <- data.frame(a=1:2,b=c("hello,","world"))
dim(x)
[1] 2 2
f <- tempfile()
write.csv(x,f,row.names=FALSE,quote=FALSE)
dim(read.csv(f))
[1] 2 2
read.csv(f)
a b
1 hello NA
2 world NA
观察列名未对齐,数据丢失和虚假数据的增加。
是否可以一般删除引号,但对数据中包含逗号的字段进行维护?
我采用的解决方案是@TimPietzcker和@BenBolker的评论的组合。
quote
可以是一个数字向量,用于指定要引用哪些列。尽管我希望仅在需要时才引用,但这在我的情况下几乎可以减少整个文件的大小(也使用na=""
)。
commas <- which(sapply(x, function(y) any(grepl(",",y))))
write.csv(x,f,row.names=FALSE,quote=commas)
read.csv(f)
a b
1 1 hello,
2 2 world
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句