2017-04-30 6 views
0

J'ai une série de trames de données dans mon environnement R I ai lu comme suit:R: manque de valeur dans la deuxième colonne de la première rangée faisant read.table reconnaître un fichier 2D 1D

x <- list.files(pattern="nuc_occupancy_region"); 

for(i in seq_along(x)){ 
    print(x[i]) 
    assign(paste(x[i]), read.table(x[i], sep='\t', header=T, fill=T)) 
} 

ESC=ls()[grep(ls(), pattern='ESC_nuc')] 
MEF=ls()[grep(ls(), pattern='MEF_nuc')] 

La liste des fichiers MEF ont souvent des données manquantes: par exemple.

de la ligne de commande

head MEF_nuc_occupancy_regionCybb9049012-9053217chrX.txt 
9049012 26 
9049013 
9049014 29 
9049015 
9049016 26 
etc. 

Le fichier ci-dessus n'est pas un problème car les valeurs manquantes seront lues comme NA de et je peux faire face à plus tard.

Cependant, dans d'autres la deuxième valeur de la première ligne est manquante ....

117755994 
117755995 
117755996 
117755997 6 
117755998 6 
117755999 6 

malgré le fait que chaque fichier a 2 colonnes, l'absence d'une deuxième valeur dans la première rangée de certains d'entre eux les amène à être reconnu comme un fichier avec une seule colonne:

read.table(example.txt, sep='\t', header=T, fill=T) 

117755994 
117755995 
117755996 
117755997 
6 
117755998 
6 
117755999 
6 

est-il possible d'éviter ce que je besoin de toutes les trames de données pour être en 2D? Merci

+0

Sons comme un besoin de « goutte = FALSE » –

+0

Peut-être essayer sans spécifier ' sep = '\ t''? Quand j'exécute 'read.table' sur le texte de votre second bloc de code avec' header = FALSE, fill = TRUE' et rien à propos d'un séparateur, j'obtiens le résultat que vous voulez. – ulfelder

+0

Si les fichiers sont tous de la même longueur, regardez read_fwf dans le paquet readr (ou tidyverse) – epi99

Répondre

0

je devais juste faire le tri avec python comme « readlines() » est impartial numéro de colonne:

import os 
list=os.listdir('.') 
counter=0 
files=[] 
for i in list: 
    file=open(i, 'r') 
    print file 
    lines=file.readlines() 
    file.close() 
    corrected=open(i+'formatted', 'a') 
    print lines[0:9] 
    for line in lines: 
     line=line.rstrip('\n') 
     line=line.split() 
     if len(line)<2: 
      line.append(0) 
      corrected.write("{}\t{}\n".format(line[0], line[1])) 
     else: 
      corrected.write("{}\t{}\n".format(line[0], line[1])) 
    corrected.close()