2017-11-02 10 views
-1

처리를 위해 readWave() 함수를 사용하여 복수 .WAV 개의 파일을 읽으려고합니다.foreach() {...}가 "함수 readWave를 찾을 수 없음"오류에서 실패하지 않도록 설계하는 방법은 무엇입니까?

각각 .WAV 파일을 순차적으로 가져올 때까지 모두 정상적으로 작동하고 하나씩 처리했습니다. 그러나 병렬 실행 모드로 실행하려고 시도하면서 foreach(){...}을 사용하고 코드를 실행했습니다. 그것은

Error in { : task 1 failed - "could not find function "readWave""

사람이 여기 제발 도와 드릴까요라고?
foreach로 변경하는 것 외에 다른 변경 사항은 없었습니다.

foreach (i = 1:nfiles, combine = cbind) %dopar% { 
           input_file_name = filist[1] 
    input_wave_file = readWave(input_file_name) 
    Preprocessing(    input_file_name) # this is my later defined fun() 
} 

답변

1

오류 메시지의이 종류는 거의 항상 (노동자의 로컬 기능을 보내) 또는 .export 옵션 (노동자가 패키지를로드 할) foreach는 .packages 옵션을 사용할 필요가 있다는 것을 의미한다. 이 경우, 근로자는 아마도 readWave 기능을 정의하는 tuneR 패키지를로드해야합니다

foreach (i=1:nfiles, combine=cbind, .packages='tuneR') %dopar% { 
    input_file_name = filist[1] 
    input_wave_file = readWave(input_file_name) 
    Preprocessing(input_file_name) 
} 
+0

덕분에, 내가 for 루프에 있었고,이 루프 내부의 기능을 인식 않네 때문이었고, 그래, 난 @ Steve Weston 함수를 사용하기 전에 패키지를 분명히 정의했다. 나는 이제 그것을 해결할 수 있었다. –