2013-04-23 6 views
0

이 질문은이 질문에 대한 계속 및 설명입니다. Extracting Data from Text Files이 질문을 끝내지 만 여전히 문제에 대한 답변을 적용하는 데 어려움이 있습니다.R에서 Awk 명령을 사용하여 데이터 추출

저는 Windows 컴퓨터에 앉아서 퍼티를 사용하여 슈퍼 컴퓨터에 작업을 제출합니다. 작업은 다음 형식의 파일을 반환합니다 (http://www.d.umn.edu/~psiders/courses/chem4642/quantumchemsoftware/tutorial/gamess/methanol.out). (이 파일은 .out 파일이 아니라 .log 파일로 다음 내용을 읽는 데 중요합니다.)

나는 내 클립 보드에 복사 한 다음 R 파일을 실행 일련의 숫자를 반환
grep MAXIMUM FileName.log | awk '{print $4}' 

,

MAX1 <- readClipboard(format=1, raw=FALSE) # reading data 
plot(MAX1, type="b", ylim=c(0,0.00005), xlim=c(0,50), 
main=bquote(After~ .(length(MAX1))~ iterations)) 
abline(h=0.00001, col="red") 

반환, 다음 쉘 명령을 사용하여 파일을 심문 계산의 그래픽 표현.

(다른 사람들은 perl 스크립트로이 작업을 수행합니다.)

계산이 완료되면 수퍼 컴퓨터에서 파일을 추출하여 내 Windows 시스템에 저장합니다.

내가하고 싶은 일은 Windows 환경에서 .log 파일을 조사 할 수있는 R 스크립트를 준비하는 것입니다.

내가 디렉토리를 변경 파일을 나열하고 R로 파일을 얻을 수 readlines 메쏘드를 사용하는 방법을 알고

,

grep("MAXIMUM",readLines("FileName.log"), value=TRUE) #searching files 

그러나 이것은 내가에 넣을 수 있습니다 숫자의 문자열로 값을 반환하지 않습니다 음모. 'awk'가 적용되지 않은 문자열로 보입니다.

아무도 나를 도와 드릴 수 없습니까?

답변

3

g 경우 다음 grep의 결과입니다

read.table(text = g)[, 4] 
+0

thanks @Grothendieck – user1945827

1

당신이 그렙 및 awk가 유사한 접근 방식을 고수 할 경우이 도움이 될 수 :

selected.lines <- grep("MAXIMUM",readLines("FileName.log"), value=TRUE) 
values <- unlist(lapply(selected.lines, function(x) { s<-strsplit(x, " +"); return(s[[1]][5]) })) 

그러나 read.table와 접근 방식을 다시 생각하는 것이 더 간단하고 빠르게 할 수 있습니다.

+0

read.table 대답은 최고였다; 하지만 당신은 그게 ... 문제라는 걸 알았어. 도와 줘서 고마워, @ 보드카. – user1945827

+0

나는 텍스트 옵션을 알지 못했고 도움을 읽을 시간이 없었습니다. 너무 나쁨 :) – vodka

관련 문제