Question

raw<-"                        
+ x y z w a s d f g h     
+ 1 2 3 4 5               
+ 1 2 3 4 5 6 7 8 9 10    
+     1 2             "    
raw    
[1] "                    \nx y z w a s d f g h \n1 2 3 4 5           \n1 2 3 4 5 6 7 8 9 10\n    1 2             "    
read.fwf(textConnection(raw),widths=c(rep(2,10)))    
  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10    
1                                   
2 x  y  z  w  a  s  d  f  g   h     
3 1  2  3  4  5                     
4 1  2  3  4  5  6  7  8  9   10    
5       1  2                        
read.fwf(textConnection(raw),widths=c(rep(2,10)),skip=1)    
   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10    
1 x  y  z  w  a  s  d  f  g   h     
2 1  2  3  4  5                     
3 1  2  3  4  5  6  7  8  9   10    
4       1  2       

Existe-t-il un autre moyen d'obtenir les bonnes données de format avec read.fwf ou lire.Table? Puis-je obtenir le même résultat sans skip=1 dans read.fwf ou avec read.table?

Était-ce utile?

La solution

Lisez à partir d'un tuyau au lieu d'un fichier, et laissez le tuyau gérer les transformations dont vous avez besoin qui peut être aussi simple que grep -v '^$' pour sauter les lignes vides.

La pipe() La fonction est décrite dans help(connections).

Voici un exemple:

R> read.fwf("/tmp/raw.txt", width=rep(2,10), skip=1)
  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 x  y  z  w  a  s  d  f  g   h 
2 1  2  3  4  5                 
3 1  2  3  4  5  6  7  8  9   10
4          1  2                 
R> read.fwf(pipe("grep -v '^$' /tmp/raw.txt"), width=c(rep(2,10)))
  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 x  y  z  w  a  s  d  f  g   h 
2 1  2  3  4  5                 
3 1  2  3  4  5  6  7  8  9   10
4          1  2                 
R> 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top