read.fwf에서 빈 줄을 삭제하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/20353158

  •  25-08-2022
  •  | 
  •  

문제

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       

read.fwf 또는 read.table을 사용하여 올바른 형식 데이터를 얻는 또 다른 방법이 있습니까? 없이 동일한 결과를 얻을 수 있습니까? skip=1 read.fwf 또는 with read.table?

도움이 되었습니까?

해결책

파일 대신 파이프에서 읽고 파이프가 필요한 변환을 처리 할 수있는 것만 큼 간단 할 수 있습니다. grep -v '^$' 빈 줄을 건너 뜁니다.

그만큼 pipe() 함수는 다음에 설명되어 있습니다 help(connections).

예는 다음과 같습니다.

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> 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top