2014-05-25 4 views
2

텍스트로 시작하는 여러 데이터 프레임이 있습니다. 때로는 필요한 정보가 11 행에서 시작하고 16 행에서 시작되는 경우도 있습니다. 그것은 바뀐다. 모든 데이터 프레임은 유용한 정보가 "location"이라는 제목의 행 뒤에 시작된다는 공통점이 있습니다.특정 값까지 R의 모든 행을 삭제하는 방법

"location"이있는 행을 포함하여 유용한 정보 위에 데이터 프레임의 모든 행을 삭제하는 루프를 만들고 싶습니다.

+4

에 오신 것을 환영합니다 StackOverflow! [질문하기] (http://stackoverflow.com/help/how-to-ask) 및 [최소 재현 가능 예제] (http://stackoverflow.com/questions/) 생성 방법에 대한 정보를 읽으십시오. 5963269/how-to-make-a-r-reproducible-example/5963610 # 5963610). 적어도 샘플 데이터를 게시하는 것이 좋습니다 (그리고 아마도 출력이 있어야한다고 생각하는 예제를 줄 수 있습니다). 지금까지 시도한 코드도 공유하십시오. 이렇게하면 다른 사람들이 당신을 도울 수있게됩니다. – Jaap

답변

2

난 당신이 뭔가 원하는 같은데요 : 그것은 (데이터 프레임으로 한번 원시 문자열로 번) 두 배의 데이터 파일을 읽기 때문에

readfun <- function(fn,n=-1,target="location",...) { 
    r <- readLines(fn,n=n) 
    locline <- grep(target,r)[1] 
    read.table(fn,skip=locline,...) 
} 

이 상당히 비효율적이다,하지만해야 파일이 너무 크지 않으면 합리적으로 잘 작동합니다. (@MrFlick은 대상에서 파일이 얼마나 멀리 떨어져 있는지 합리적인 상한선이 있다면 n을 설정하여 대상을 검색하기 위해 전체 파일을 읽을 필요가 없다고 설명합니다.)

내가 파일의 다른 세부 사항을 알고하지 않습니다하지만 그 문자열, 또는 다른보다 구체적인 목표을 시작하는 라인을 식별 할 수 "^location"를 사용하는 것이 더 안전 할 수도 ...

+1

비효율적 일 수 있지만 먼저 data.frame으로 읽은 다음 열 클래스 검색을 망칠 수 있으므로 제거하는 것이 훨씬 낫습니다. 특정 행 (예 : 20) 이전에 위치가 항상 발생하는 경우 'readlines (fn, n = 20)'을 설정하여 전체 파일을 읽지 않도록 할 수 있습니다. – MrFlick

관련 문제