La lecture de fichier binaire en R
J'essaie de lire un fichier binaire dans R, mais ce fichier contient des lignes de données écrites en code binaire. Donc, il n'a pas un ensemble complet de données appartenant à une colonne au lieu de cela, il est stocké sous forme de lignes de données. Voici ce que mon apparence des données:
Octets 1-4: int ID
Octet 5: char caractère de réponse
Octets 6 à 9: int Resp Dollars
Octet 10: Type char char
quelqu'un peut m'aider à comprendre comment lire ce fichier dans le R?
Salut Les Gars,
Voici le code que j'aie essayé jusqu'à présent. J'ai essayé un couple de choses avec peu de succès. Malheureusement, je ne peux pas poster des données sur des sites publics, des excuses. Je suis relativement nouveau à R, donc j'ai besoin d'aide afin de savoir comment améliorer le code. Merci à l'avance.
> binfile = file("File Location", "rb")
> IDvals = readBin(binfile, integer(), size=4, endian = "little")
> Responsevals = readBin(binfile, character (), size = 5)
> ResponseDollarsvals = readBin (binfile, integer (), size = 9, endian= "little")
Error in readBin(binfile, integer(), size = 9, endian = "little") :
size 9 is unknown on this machine
> Typevals = readBin (binfile, character (), size=4)
> binfile1= cbind(IDvals, Responsevals, ResponseDollarsvals, Typevals)
> dimnames(binfile1)[[2]]
[1] "IDvals" "Responsevals" "ResponseDollarsvals" "Typevals"
> colnames(binfile1)=binfile
Error in `colnames<-`(`*tmp*`, value = 4L) :
length of 'dimnames' [2] not equal to array extent
Lire raw octets avec readBin, poussez-la dans une matrice avec nrows même en tant que fichier, puis readBin à partir d'ensembles de colonnes. C'est rapide. Ce n'est essentiellement que pour une plus compliqué format, supprimer tous les en-tête des trucs et slurp loin: stackoverflow.com/questions/12931979/reading-binary-files-in-r
Fournir le fichier et je vais mettre un exemple.
mdsumner - je ne peux pas partager le fichier de données en raison de NDA accords - est-il possible que vous pouvez poster la version simplifiée du code? Je suis relativement nouveau à R vais avoir quelques difficultés à suivre le code dans le lien que vous avez posté....merci!
la chose que je ne peut pas être pris la peine de faire est de générer un fichier de test, et c'est ce qui est erroné avec votre question
OriginalL'auteur user1819654 | 2012-11-13
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ouvrir le fichier en tant que fichier raw, puis le problème readBin ou readChar les commandes de chaque ligne. Ajoutez chaque valeur à une colonne, comme vous allez.
Boucle autour de ce bloc:
Ensuite créer votre bloc de données.
Voir ici: http://www.ats.ucla.edu/stat/r/faq/read_binary.htm
C'est quelque chose que vous devez savoir, basé sur la façon dont vous avez écrit le fichier. Vous pouvez déterminer en regardant les données binaires. Si vous êtes sur un système UNIX, la commande 'od-t x1 <fichier>' imprime les valeurs d'octets. Un seul " 0a " comme un terminateur de ligne signifie que les fins de ligne UNIX. Une paire, '0' et de '0' signifie Windows fins de ligne. Pas d'espace entre un enregistrement et la prochaine ne veux pas de fins de ligne, et vous ne devriez pas utiliser le supplément de readChar() appel à sucer jusqu'à la (non-existant) caractères de fin.
Matthieu - j'ai compris les windows les fins de ligne - une dernière question - im essayant de comprendre la bonne taille en octets d'entrée pour ma réponse dollars de la colonne chaque fois que j'essaye d'octets d'entrée de taille, je reçois un message d'erreur disant que la taille est inconnue sur cette machine, j'ai essayé de l'octet suivant les tailles - 6,9,3,4,5 - merci d'avance pour votre aide
OriginalL'auteur Matthew Lundberg