2013-07-05 5 views
3

많은 문자열 파일 (.str)을 가지고 있으며 R (파일에서 반복)로 가져 오려고합니다. 문제는 첫 번째 행이 열 이름도 아니고 행렬의 시작도 아니란 점입니다. 이것은 주석 행입니다. 마지막 행에 대한 Idem. 이 두 줄 사이에 을 가져오고 싶습니다. 어떻게 할 수 있습니까? 당신이 파일의 첫 번째 마지막 줄을 건너 뛸 할 경우 다음과 같이데이터 파일의 주석 줄을 건너 뛰는 방법 R

들으

+0

환영합니다. [재현 할 수있는 예제] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)를 만드는 방법을 읽어보십시오. 예를 들어, 텍스트의 일부분을 추가 한 다음 시도한 부분을 추가해야합니다. – agstudy

+1

그들은 어떤 종류의 코멘트 문자보다 먼저 오는가? – James

+5

'? read.table'을 읽으십시오. 'skip','nrow','comment.char' 매개 변수는 당신에게 적절할 수 있습니다. – Roland

답변

5

, 당신은 그것을 할 수 있습니다. readLines을 사용하여 파일을 문자 벡터로 읽은 다음 read.csv에 전달합니다. 데이터의 행의 수는 파일 내의 텍스트의 라인 수가 3보다 작기 때문에

strs <- readLines("filename.csv") 
dat <- read.csv(text=strs,    # read from an R object rather than a file 
       skip=1,    # skip the first line 
       nrows=length(strs) - 3 # skip the last line 
       ) 

- 3은 : 1, 처음에 광고를 스킵 열 헤더 1 개 라인 1은 상기 광고를 스킵 종료. 물론 nrows 인수를 무시하고 가져온 후 데이터 프레임에서 넌센스 행을 삭제할 수도 있습니다.

4

R 스크립트를 입력하는 것과 같은 방법으로 데이터 파일의 아무 곳에 나 주석을 넣을 수 있습니다. 예를 들어, 나는이 같은 data.txt 있습니다

# comment 1 
str1 
str2 
# comment 2 
str3 
# comment 3 
str4 
str5# comment 4 
str6 
str7 
# comment 5 

그런 다음 당신은 코멘트를 건너 아무것도 할 필요가 없습니다 :

> x<-read.table("data.txt", header=FALSE) 
> x 
    V1 
1 str1 
2 str2 
3 str3 
4 str4 
5 str5 
6 str6 
7 str7 
> 

comment 4 것을 읽을 수 없습니다. comment.char 옵션을 사용하여 설명 문자 #을 변경할 수 있습니다.

0

홍 Ooi가 음수 인덱싱과 함께 제공하는 readLines 접근 방식을 결합하면 파일의 임의의 행을 건너 뛸 수 있습니다. 헤더가 있지만 주석/메타 정보가있는 파일에서 2-5 줄을 건너 뛴 예제는 다음과 같습니다.