R - la Lecture des lignes à partir d'un .txt-fichier après une ligne spécifique
J'ai un tas de sortie .txt-des fichiers qui se compose d'une grande liste de paramètres et un X-Y-coordonner l'ensemble. J'ai besoin d'extraire ces coordonnées de tous les fichiers de sorte que seules ces lignes sont importés à un vecteur. Cela fonctionnerait très bien avec
impcoord<-read.table("file.txt",skip= ,nrow= ,...)
mais les fichiers sont imprimés le jeu de coordonnées après les différentes longueurs d'appui paramètres.
Heureusement, les coordonnées commencent toujours après une ligne contenant certains mots.
Donc ma question est, comment puis-je commencer la lecture de la .txt-fichier après ces mots? Disons qu'ils sont:
coordinatesXY
Merci beaucoup pour votre temps et de votre aide!
-Olli
--Edit--
Désolé pour la confusion.
La partie du fichier est la suivante:
##XYDATA= (X++(Y..Y))
131071 -2065
131070 -4137
131069 -6408
131068 -8043
... ...
... ...
La première ligne étant celle où skip
devrait prendre fin et les coordonnées suivantes doivent être importés à un vecteur. Comme vous pouvez le voir les coordonnées X de début de 131071 et à la fin de 0.
- Il n'y a plus à ce fichier, votre problème de mon post mentionné une ligne qui a commencé avec
##END=
, c'est que la ligne d'après les coordonnées des lignes? - Il est. Peut-être que je devrais intégrer
nrow=
pour le paramètre de ligne?
Vous devez vous connecter pour publier un commentaire.
1) lire.modèle
read.pattern
dans gsubfn peut être utilisé pour lire uniquement les lignes correspondant à un modèle spécifique. Dans cet exemple, nous match en début de ligne, espace facultatif(s), 1 ou plusieurs chiffres, 1 ou plusieurs espaces, une option moins suivi par 1 ou plusieurs chiffres, espace facultatif(s) à la fin de la ligne. Les portions correspondant à la mise entre parenthèses des portions de la regexp sont retournés comme des colonnes de données.cadre.text = Lines
dans ce autonomes exemple peut être remplacé par"myfile.txt"
, disons, si les données sont à venir à partir d'un fichier. Modifier le modèle pour répondre.donner:
2) de le lire deux fois une Autre possibilité en utilisant uniquement de la base de R est simplement de la lire une fois pour déterminer la valeur de
skip=
et une deuxième fois pour faire le lire à l'aide de cette valeur. Pour lire à partir d'un fichiermyfile.txt
remplacertext = Lines
ettextConnection(Lines)
avec"myfile.txt"
.Ajouté Quelques révisions et ajouté de la deuxième approche.
Cela ressemble à un travail pour
data.table
'sfread
--edit--
C'est pourquoi il est bon de donner un exemple reproductible. Cette erreur signifie que votre dossier est à l'origine de la difficulté.
De la commande skip correspond au texte que vous donnez au fichier pour identifier ce que la ligne de commencer à l', si vous avez besoin de lui donner une unique chaîne de caractères à partir du début de la ligne que vous souhaitez démarrer la lecture à partir d'. Cette fonction serait de travailler pour quelque chose comme ceci:
ends field 1 on line 2 when detecting types: ##END=
indépendamment de ce que les valeurs ou les déclarants, je donne enskip=
.Une approche possible pourrait être la suivante:
Vous lire une ligne à la fois à partir du fichier d'entrée et arrêtez-vous quand vous trouver l'indicateur de chaîne. Puis vous lisez le fichier par le biais de
read.table
. Avec cette approche, vous n'avez pas stocker l'intégralité du fichier en mémoire, mais juste la pièce dont vous avez besoin.