如何删除write.csv中NULL值的双引号?

时间:2010-09-30 00:37:43

标签: r

我正在努力将data.frame导出到csv,以便在我对其进行一些分析后用于电子商务系统。

我正在删除提取之前的NA值,因为在我添加数据的系统中不允许它们。我的过程看起来像这样,我的data.frame被称为prod_out:

prod_out[is.na(prod_out)] <- c("")

prod_con<-file('product_output.csv',encoding="utf8")

write.csv(prod_out,file=prod_con,append=FALSE,eol="\r",quote=TRUE,row.names=FALSE)

这会生成文件,但是,对于NULL为的字段,它们都是双引号,如下所示:

...,"",...

我需要没有NULL字段的双引号,并将它们留给任何字符字段,如下所示:

...,,...

我确实更改了quote = FALSE,但是删除了所有双引号,我需要字符字段保持不变。有没有办法取消引用NULL值?

感谢任何帮助。

谢谢,

杰森

2 个答案:

答案 0 :(得分:5)

试试这个:

df<-data.frame(w=c("a","b"),x=runif(2),y=rep(NA,2),z=runif(2))
write.csv(df,na="",quote=TRUE,row.names=FALSE)

答案 1 :(得分:1)

首先,如果你还没有“NA”和NA不是同一个东西,那么知道它是有帮助的:

> x = c(3, 4, 5, 7, 12, "NA", "NA", 12, 43)
> x
[1] "3"  "4"  "5"  "7"  "12" "NA" "NA" "12" "43"
> is.na(x)
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

> # now convert each "NA" to NA
> x[x=="NA"] = NA
> x
[1] "3"  "4"  "5"  "7"  "12" NA   NA   "12" "43"
> is.na(x)
[1] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE

总而言之,要从每个NA“删除双引号”,您需要将“NA”转换为NA,如上所述。