2013-11-26 93 views
9

我的情況是我正在嘗試寫入一個數據幀,這些數據幀由具有不同數據類型的列組成,這些數據類型與R中的csv文件相同。我用來寫入文件的代碼是:如何在編寫R .csv文件時控制雙引號

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

這會導致問題後,當我嘗試將CS​​V文件加載到一個SQL數據庫,因爲一些列含有包含字符串「」。如果我在上面的代碼中設置了quote = TRUE,則當我加載到數據庫時,它會爲我的數字數據類型創建問題。

我的問題:有沒有辦法控制R在編寫CSV文件時向列添加引號的方式?我希望能夠在字符串周圍添加引號,但不能添加到其他數據類型。

非常感謝您的幫助。

+0

這是答案我正在尋找,謝謝你的幫助。我遇到的問題是R引用了數字數據類型以及字符串,這給我的數據加載帶來了麻煩。你建議的解決方案似乎有訣竅。 – Sledge

+0

另外,問題的一部分可能是我的某些列類型類型:factor,這可能會導致您描述的某些明顯不一致。 – Sledge

回答

9

指定的列你想引用這樣

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) 
+0

我剛看到你的額外評論,我最終做了類似的事情,所以我不必檢查每一列的例外情況。我唯一的關於write.csv()的抱怨是,如何影響列引號並不明顯,而列名不加引號。列名引號似乎是一個全有或全無的類型的東西...... – Sledge