2016-07-19 3 views
1

여기에서 R의 병렬 처리를 사용하여 텍스트의 언어를 번역하려고합니다. 병렬 처리를 사용하는 것은 이번이 처음입니다. 나는 다음과 같은 오류를 얻고,Paraller Processing in R

install.packages("RYandexTranslate") 
    install.packages("textcat") 
    install.packages("plyr") 
    install.packages("parallel") 
    library("RYandexTranslate") 
    library("textcat") 
    library("dplyr") 
    library("parallel") 
    api_key <- "trnsl.1.1.20160707T103515Z.90fa575d702ae81e.6ec78e064eb94a1c00a9bc506c615f223cf0cf5b" 
    cl <- makeCluster(4) 
    Query_L_German <- c("5 euro muenze stempelglanz","2 euro muenzen uebersicht") 
    Par_Conversion <- function(QUery_L_German) 
    { 
     for(i in 1:length(Query_L_German)) 
     { 
     x <- translate(api_key,Query_L_German[i], "de-en")$text 
     return(x) 
     } 
    } 
    a <- length(Query_L_German) 
    parLapply(cl, seq(a), function(i,Query_L_German,Par_Conversion) 
     for(i in 1:length(Query_L_German)){ 
     x <- Par_Conversion(Query_L_German) 
     return(x) 
     }, Query_L_German, Par_Conversion) 

:하지만 내 코드는

Error in checkForRemoteErrors(val) : 3 nodes produced errors; first error: object 'Query_L_German' not found

답변

1

명시 적으로 parLapply에서 사용되는 당신이 함수를 정의 할 필요 variabels 기능 parLapply를 사용하고 있습니다. 이것은 clusterExport 함수에 varlist을 정의하여 수행 할 수 있습니다. 더 많은 것을 알고 싶다면 여기에 question/answer을 어떻게 쓰는지 parLapply으로 다른 것들이 있습니다. parLapply 사용하기 전에

귀하의 예를

다음 줄을 삽입하여 해결할 수 있습니다

clusterExport(cl, varlist = c("api_key","Query_L_German","translate")) 
+0

감사 다니엘이 지적에 대해. 코드를 업데이트했습니다. 당신은 지금 그것을 들여다 볼 수 있겠습니까 – Akshay

+0

@Akshay Ok. 나는 그것을 지금 재현 할 수있다. 내 편집 된 답변을 확인하십시오. 희망은 지금 해결됩니다. 안녕하세요, Daniel – Daniel

+0

감사합니다. Daniel,이 parLapply() 작동 방식을 설명해 주시겠습니까? 위 코드에서 ParLConly 함수를 직접 사용하거나 parLApply()에서이 함수를 사용할 수 있지만 parLapply()를 사용할 때 실행 시간이 크게 향상되지는 않습니다. 이 함수에 입력으로리스트를 전달해야합니까? parLapply() 함수에서 'seq()'매개 변수의 역할은 무엇입니까? – Akshay