【问题标题】:How to control double quotes when writing R .csv files编写 R .csv 文件时如何控制双引号
【发布时间】:2013-11-26 13:44:07
【问题描述】:

我的情况是我正在尝试将由具有不同数据类型的列组成的数据框写入 R 中的 csv 文件。我用来编写文件的代码是:

filename = file("equipment.csv")
write.csv(file = filename, x = equipment, quote = FALSE, row.names = FALSE ) 

当我尝试将 csv 文件加载到 SQL 数据库中时,这会导致稍后出现问题,因为某些列包含包含“,”的字符串。如果我在上面的代码中设置quote = TRUE,当我加载到数据库时,它会给我的数值数据类型带来问题。

我的问题:有没有办法控制 R 在编写 csv 文件时向列添加引号的方式?我希望能够在字符串周围添加引号,但不能在其他数据类型中添加引号。

非常感谢您的帮助。

【问题讨论】:

  • 这是我一直在寻找的答案,感谢您的帮助。我遇到的问题是 R 引用了数字数据类型以及字符串,这给我的数据加载带来了麻烦。您建议的解决方案似乎可以解决问题。
  • 另外,部分问题可能是我的某些列类型 class type: factor,这可能导致您描述的一些明显的不一致。

标签: r csv


【解决方案1】:

指定你想要这样引用的列

write.csv(file = filename, x = equipment, quote = c(2,3), row.names = FALSE )

PS:如果你想自动计算出哪些列不用管,你可以这样做:

non_numerics<-adply(1:ncol(equipment),1,function(x)print(is.numeric(equipment[,x])))
quote_val<-as.numeric(array(non_numerics[which(!non_numerics$V1),1]))

filename = file("equipment.csv")
write.csv(file = filename, x = equipment, quote = quote_val, row.names = FALSE )

【讨论】:

  • 我刚刚看到你的额外 cmets,我最终做了类似的事情,所以我不必检查每一列是否有异常。我对 write.csv() 的唯一抱怨是,在不引用列名的同时如何影响列引号并不明显。列名引号似乎是一种全有或全无的东西......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-14
  • 1970-01-01
相关资源
最近更新 更多