如何设计foreach(){...}不会失败“无法找到函数readWave”错误?

时间:2017-11-02 07:27:26

标签: r parallel-processing wav

我正在尝试使用 .WAV 函数阅读多个 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 个答案:

答案 0 :(得分:1)

这种错误消息几乎总是意味着您需要使用foreach .packages选项(使工作人员加载包)或.export选项(将本地函数发送给工作人员) )。在这种情况下,工作人员可能需要加载定义tuneR函数的readWave包:

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)
}