问题 如何在编写R .csv文件时控制双引号


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

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

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

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

非常感谢您的帮助。


8777
2017-11-26 13:44


起源

这是我正在寻找的答案,谢谢你的帮助。我遇到的问题是R引用数字数据类型以及字符串,这给我带来了数据加载的麻烦。你建议的解决方案似乎可以解决问题。 - Sledge
此外,问题的一部分可能是我的一些列类型类型:factor,它可能会让您描述一些明显的不一致。 - Sledge


答案:


指定要引用的列,如下所示

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 )

10
2017-11-26 13:53



我刚看到你的其他评论,我最后做了类似的事情,所以我没有必要检查每一列的异常情况。我对write.csv()的唯一抱怨是,如何在不加引号的情况下影响列引号并不明显。列名引号似乎是一种全有或全无的东西...... - Sledge