2011-08-31 7 views

답변

2

전체 파일을 읽은 다음 테이블 헤더 또는 빈 줄에 대해 구문 분석하려고합니다. 헤더를 txt 파일의 테이블을 변경할 때 쉽게 변경할 수 있도록 설정하고 스크립트 맨 위에 놓아야합니다.

+0

감사합니다. 그래서 나는 모든 것을'lines <- scan (inFile, what = "character", sep = "\ n")'으로 읽도록했다. 첫 번째 테이블은 첫 번째 행의 제목과 첫 번째 행의 머리글과 첫 번째 열의 row.names를가집니다. 테이블의 데이터 부분은 항상 32 줄입니다. 첫 번째 테이블을 어떻게 잡을 수 있습니까? – James

+2

필자는 readLines를 사용했을 것입니다. 왜냐하면 (내가 무엇을 얻을지 알고 있기 때문에) 세그먼트를 입력으로 사용했기 때문입니다. 'read.table (textConnection (lines [2:33])' –

1

간단한 google 검색에서이를 반환했습니다. 나를 위해 완벽하게 일했습니다.

> x <- readLines(textConnection("1 
+ Pietje 
+ I1 I2 Value 
+ 1 1 0.11 
+ 1 2 0.12 
+ 2 1 0.21 
+ 
+ 2 
+ Jantje 
+ I1 I2 I3 Value 
+ 1 1 1 0.111 
+ 3 3 3 0.333")) 
> closeAllConnections() 
> start <- grep("^[[:digit:]]+$", x) 
> mark <- vector('integer', length(x)) 
> mark[start] <- 1 
> # determine limits of each table 
> mark <- cumsum(mark) 
> # split the data for reading 
> df <- lapply(split(x, mark), function(.data){ 
+  .input <- read.table(textConnection(.data), skip=2, header=TRUE) 
+  attr(.input, 'name') <- .data[2] # save the name 
+  .input 
+ }) 
> # rename the list 
> names(df) <- sapply(df, attr, 'name') 
> df 
$Pietje 
    I1 I2 Value 
1 1 1 0.11 
2 1 2 0.12 
3 2 1 0.21 

$Jantje 
    I1 I2 I3 Value 
1 1 1 1 0.111 
2 3 3 3 0.333 

Source.

관련 문제