Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何创建一个循环函数来应用来自;“声生态学”;到.wav文件的特定部分使用R_R_Loops_Acoustics_Tuner - Fatal编程技术网

我如何创建一个循环函数来应用来自;“声生态学”;到.wav文件的特定部分使用R

我如何创建一个循环函数来应用来自;“声生态学”;到.wav文件的特定部分使用R,r,loops,acoustics,tuner,R,Loops,Acoustics,Tuner,我有大量的.wav文件,我需要使用R中“soundecology”包中的声学指数进行分析。但是,录音没有统一的开始时间,我需要分析文件中的特定时间段。我想创建一个函数和循环来自动化这个过程。 我已经为每个录音文件夹(每个文件夹是不同的位置)创建了一个电子表格,其中列出了录音以及我需要分析的每个录音中的时间。基本上,一行包含:声音文件名、样本开始的时间(例如09:00:00)、从文件开始到该时间发生的秒数,以及从文件开始到样本结束的秒数。 这些数据如下所示: 我正在使用软件包“tuneR”和“w

我有大量的.wav文件,我需要使用R中“soundecology”包中的声学指数进行分析。但是,录音没有统一的开始时间,我需要分析文件中的特定时间段。我想创建一个函数和循环来自动化这个过程。 我已经为每个录音文件夹(每个文件夹是不同的位置)创建了一个电子表格,其中列出了录音以及我需要分析的每个录音中的时间。基本上,一行包含:声音文件名、样本开始的时间(例如09:00:00)、从文件开始到该时间发生的秒数,以及从文件开始到样本结束的秒数。 这些数据如下所示:

我正在使用软件包“tuneR”和“warbleR”来选择要分析的声音文件的特定部分。以下是我希望在所有声音文件中循环的代码和输出:


wavrow1函数的
read\u wave
参数如下:

read_wave(X,index,from=X$start[index],to=X$end[index],channel=NULL,
header=FALSE,path=NULL)

在手动测试中,指定
from=mvb$start[1],to=mvb$end[1]

在创建的函数中,不指定参数:


rread\u wave
函数采用以下参数:

read_wave(X,index,from=X$start[index],to=X$end[index],channel=NULL,
header=FALSE,path=NULL)

在手动测试中,指定
from=mvb$start[1],to=mvb$end[1]

在创建的函数中,不指定参数:


r读波是来自soundecology软件包还是来自其他软件包?在这种情况下,哪一个?哦,对不起,读波是来自“莺”软件包。读波是来自soundecology软件包还是来自其他软件包?在这种情况下,哪一个?哦,对不起,读波是来自“莺”软件包包。是的,所以在手动测试中,我用“1”表示第1行,但我希望我创建的函数适用于任何一行,所以我使用了[I],我认为“1”是应该指出的是我的数据帧的第一行,在那里可以找到开始时间和结束时间。我在想,当我做:row1.test时,我了解你的目标:查看我的answerThank@Waldi的编辑,这有助于解释问题。我按照你的描述更新了函数,修复了第一个问题。我还添加了:
 返回(soundfile.aci$acitotal_left)
到帮助解决循环错误的函数。现在,我在循环中得到一个不同的错误:
readBin中的错误(con,int,n=n,size=bytes,signed=(bytes!=1),:无效的'n'参数
你知道为什么会发生这种情况吗?更新,上面的错误只是我的.csv文件中的一个错误造成的。现在一切正常!是的,所以在手动测试中,我用“1”指示行1,但我希望我创建的函数适用于任何行,所以我使用了[I]我以为“1”应该指出的是我的数据帧的第一行,在那里可以找到开始时间和结束时间。我在想,当我做:row1.test时,我了解你的目标:查看我的answerThank@Waldi的编辑,这有助于解释问题。我按照你的描述更新了函数,修复了第一个问题。我还添加了:
 返回(soundfile.aci$acitotal_left)
到帮助解决循环错误的函数。现在,我在循环中得到一个不同的错误:
readBin中的错误(con,int,n=n,size=bytes,signed=(bytes!=1),:无效的“n”参数
您知道为什么会发生这种情况吗?更新,上面的错误只是我的.csv文件中的一个错误造成的。现在一切正常!
     max_freq not set, using value of: 22050 


 min_freq not set, using value of: 0 


 This is a mono file.

 Calculating index. Please wait... 

  Acoustic Complexity Index (total): 934.568
acianalyzeFUN <- function(mvb, i){
  r <- read_wave(mvb$sound.files[i], mvb$start[i], mvb$end[i])
  soundfile.aci <- acoustic_complexity(r, j=10)
}

row1.test <- acianalyzeFUN(mvb, 1)
max_freq not set, using value of: 22050 


 min_freq not set, using value of: 0 


 This is a mono file.

 Calculating index. Please wait... 

  Acoustic Complexity Index (total): 19183.03

  Acoustic Complexity Index (by minute): 931.98
output <- vector("logical", length(97)) 
for (i in seq_along(mvb$sound.files)) {     
  output[[i]] <- acianalyzeFUN(mvb, i) 
}
max_freq not set, using value of: 22050 


 min_freq not set, using value of: 0 


 This is a mono file.

 Calculating index. Please wait... 

  Acoustic Complexity Index (total): 19183.03

  Acoustic Complexity Index (by minute): 931.98

Error in output[[i]] <- acianalyzeFUN(mvb, i) : 
  more elements supplied than there are to replace
acianalyzeFUN <- function(mvb, i){
  r <- read_wave(mvb$sound.files[i], from = mvb$start[i], to = mvb$end[i])
  soundfile.aci <- acoustic_complexity(r, j=10)
}