2013-07-19 5 views
0

나는 긴 문자열이 포함 data$paragraph 안의 텍스트에 따라 변수 data$theme의 값을 변경하기 위해 사용하고 R에 다음과 같은 지침이 있습니다R의 기능을 빠르게하는 방법

lines <- grep('banana|apple', file$paragraph) # lines that match search terms 
    for (i in 1:length(lines)){ 
    data[lines[i], 'theme'] <- 'Fruit' 
    } 

이 명령의 문제점은 대용량 데이터 세트의 경우 매우 비효율적이라는 것입니다. 나의 실제 사례는 20 만개가 넘는다. 각 대체 작업을 수행하는 데 1 초가 넘는 시간이 걸리고 4 만 개가 넘는 하위 작업을 수행해야합니다. 전체 스크립트의 작은 단계를 완료하는 데 5 시간 이상이 걸릴 수는 없습니다. 나는 이것을 가속화 할 방법을 절실히 찾고 있는데, 간단한 해결책이 있지만 거기에 도달하는 더 좋은 방법을 생각할 수는 없다. 도움!

+2

당신은'data [lines, 'theme'] <- 'Fruit''을 시도 했습니까? 더 유용한 답변을 얻으려면 데이터 샘플을 제공하십시오. – ialm

답변

4
data[lines, 'theme'] <- 'Fruit' 

R은 전체 벡터에서 동시에 작업 할 수 있습니다. 이를 이용하면 일을 빠르게하는 쉬운 방법입니다.

+0

시원하게, 이것은 훨씬 좋아 보이지만 번개처럼 빠른 절차가 아니기 때문에 카운터를 갖고 싶습니다. 안쪽에 나는'print (i, 'of, length (lines))'를 추가 할 수 있었지만 그곳의 한 줄짜리 줄은 어떻게 할 수 있습니까? –

+3

아니오, 단 200k 레코드 만 있으면 매우 오래 걸리면 놀랄 것입니다. 'grep'에 대한 호출은 실제로 가장 시간이 많이 걸리는 부분입니다. – Peyton

+0

맞아, 방금 5 시간 내 명령을 2 초도 안 걸리는 것으로 바꿨다. 나는 다른 상황에서'data [c (1, 2, 3),] '를 했으므로 실제로 다소 당황 스럽다. 그러나 며칠 동안이 문제로 어려움을 겪고있다. 고마워, 페이튼, 내 주말을 구 했잖아! –

관련 문제