2017-09-06 4 views
0

lorsque j'utilise r pour lire les fichiers txt, je mets le read.table sep para comme sep = "\ 001" ou sep = "\\ 001" les deux ne fonctionnent pas.Lire des fichiers txt contenant un caractère nul comme séparateur, tel que 001?

                 V1 
1    886153044351\0010981623127\001\00113036806119\00113036806119 
2   132693697611\0010\00118380389386\00113795105928\00113795105928 
3    886134400554\0010981623127\001\00115033907649\00115033907649 
4   550075776697\00115955516598\00115955516598\00113969121085\001 
5    886156798054\0010918770552\001\00115977055775\00115977055775 
6 132642200735\00118015668803\00118015668803\00118655109444\00118655109444 

ci-dessus est que je l'utilise par défaut de table de lecture dans R. J'utilise fonction split, mais aussi ne fonctionne pas comme ci-dessus septembre.

Dans notepad ++, je remplace \ 0001 par une virgule ",", donc je peux lire les données dans R comme une trame de données.

Si les données sont volumineuses et que je ne peux pas utiliser notepad ++ pour remplacer le caractère nul, comment puis-je le faire?

+0

Utilisez 'strsplit (dat $ V1," \ 001 ", fixed = TRUE)'. –

+1

Ou: 'library (splitstackshape); cSplit (dat, 'V1', sep = '001') '. – Jaap

Répondre

0

Essayez d'utiliser la fonction read.delim à la place:

read.delim(
text = "V1 
1 886153044351\0010981623127\001\00113036806119\00113036806119 
2 132693697611\0010\00118380389386\00113795105928\00113795105928 
3 886134400554\0010981623127\001\00115033907649\00115033907649 
4 550075776697\00115955516598\00115955516598\00113969121085\001 
5 886156798054\0010918770552\001\00115977055775\00115977055775 
6 132642200735\00118015668803\00118015668803\00118655109444\00118655109444", 
sep = "\001", header = FALSE) 


       V1   V2   V3   V4   V5 
1    V1   NA   NA   NA   NA 
2 1 886153044351 981623127   NA 13036806119 13036806119 
3 2 132693697611   0 18380389386 13795105928 13795105928 
4 3 886134400554 981623127   NA 15033907649 15033907649 
5 4 550075776697 15955516598 15955516598 13969121085   NA 
6 5 886156798054 918770552   NA 15977055775 15977055775 
7 6 132642200735 18015668803 18015668803 18655109444 18655109444 
+0

Etes-vous sûr que cela fonctionne avec un fichier? Je ne gère pas. –

0

Je ne parviens pas à utiliser la solution de @Colin Fay à partir d'un fichier.

Une solution est:

  • lire le fichier en tant que chaîne de caractères
  • remplacer les \001 « s par des virgules
  • écrire la nouvelle chaîne dans un fichier
  • lire le nouveau fichier csv

Comme cela dans R:

library(readr) 
rawfile <- read_file("txt001sep.txt") 
rawfile_csv <- gsub("\\\\001", ",", rawfile) 
write_file(rawfile_csv, "myfile.csv") 
read_csv("myfile.csv", col_names=FALSE)