2013-11-26 12 views
9

La mia situazione è che sto tentando di scrivere un frame di dati costituito da colonne che hanno tipi di dati diversi in un file CSV in R. Il codice che uso per scrivere il file è :Come controllare le virgolette doppie durante la scrittura di file .csv

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

Questo provoca problemi più tardi, quando provo a caricare il file CSV in un database SQL in quanto alcune delle colonne contengono stringhe che contengono ''. Se imposto quote = TRUE nel codice precedente, crea problemi per i miei tipi di dati numerici quando carico sul database.

La mia domanda: c'è un modo per controllare il modo in cui R aggiunge citazioni alle colonne quando si scrivono file CSV? Vorrei poter aggiungere virgolette sulle stringhe ma non sugli altri tipi di dati.

Molte grazie per il vostro aiuto.

+0

Questa è la risposta che stavo cercando, grazie per il vostro aiuto. Il problema che sto avendo è che R sta citando tipi di dati numerici e stringhe che mi danno problemi con il mio carico di dati. La soluzione che suggerisci sembra fare il trucco. – Sledge

+0

Inoltre, parte del problema potrebbe essere che alcuni dei miei tipi di colonna tipo di classe: factor, che potrebbe aver permesso ad alcune delle inconsistenze apparenti che descrivete. – Sledge

risposta

9

specificare le colonne che si desidera citato come questo

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

PS: se si desidera lavorare automaticamente le colonne da lasciare da soli, si può fare in questo modo:

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

Ho appena visto i tuoi commenti aggiuntivi, ho finito per fare qualcosa di simile a questo quindi non ho dovuto controllare ogni colonna per le eccezioni. La mia unica lamentela riguardo a write.csv() è che non era ovvio come influenzare le citazioni delle colonne lasciando i nomi delle colonne non quotate. Le virgolette dei nomi delle colonne sembrano essere un tipo tutto o niente di cosa ... – Sledge

Problemi correlati