web-dev-qa-db-fra.com

définir le séparateur ';' dans write.csv

J'ai le code suivant:

myTable[i,] = strsplit(line, split=";")[[1]]
write.csv(myTable[-1,], file="episodes_cleared.csv", sep=";", row.names=FALSE, quote=FALSE)

Malheureusement, le séparateur est toujours ',':

iEpisodeId,iPatientId,sTitle,sICPc,dStart,dEnd,bProblem

L'exécution du code me donne:

Messages d'avertissement:

1: In write.csv(myTable[-1, ], file = "episodes_cleared.csv", sep = ";",  : attempt to set 'sep' ignored
2: In write.csv(myTable[-1, ], file = "episodes_cleared.csv", sep = ";",  :

tentative de définition de "sep" ignorée

Qu'est-ce que je fais mal?

7
dsent

Tout d'abord, vous devez fournir un exemple reproductible.

Cependant, si vous utilisez write.csv2 il utilise par défaut un point-virgule comme séparateur.

9
Michael Kirchner

La documentation https://stat.ethz.ch/R-manual/R-devel/library/utils/html/write.table.html dit:

write.csv utilise "." pour le point décimal et une virgule pour le séparateur.

write.csv2 utilise une virgule pour le point décimal et un point-virgule pour le séparateur, la convention Excel pour les fichiers CSV dans certains paramètres régionaux d'Europe occidentale.

Ces wrappers sont délibérément rigides: ils sont conçus pour garantir que les bonnes conventions sont utilisées pour écrire un fichier valide. Les tentatives de modification de append, col.names, sep, dec ou qmethod sont ignorées, avec un avertissement.

Donc, non seulement par défaut, ce séparateur le force. Utilisation

write.table(data,file="data.csv",sep=",",dec = " ")
7
ynux

Vous pouvez également utiliser l'écrivain CSV rapide "fwrite" avec l'option "sep =;" .. détails

0
Andrii