代码之家  ›  专栏  ›  技术社区  ›  analyticsPierce

如何删除write.csv中空值周围的双引号?

r
  •  1
  • analyticsPierce  · 技术社区  · 14 年前

    我正在将data.frame导出到csv中,以便在对其进行分析之后在电子商务系统中使用。

    我将在提取之前删除NA值,因为在我添加数据的系统中不允许这些值。我的数据框架的流程是这样的,叫做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)
    

    但是,这会为空字段生成文件,这些字段都是双引号,如下所示:

    ...,"",...
    

    我不需要为空字段使用双引号,并将其保留为以下任何字符字段:

    ...,,...
    

    我确实更改了quote=false,但是这删除了所有的双引号,我需要字符字段保持不变。是否有任何方法可以取消对空值的引用?

    感谢您的帮助。

    谢谢,

    杰森

    2 回复  |  直到 14 年前
        1
  •  5
  •   kohske    14 年前

    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)
    
        2
  •  1
  •   doug    14 年前

    > 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