【发布时间】:2025-12-12 19:15:01
【问题描述】:
我正在尝试创建一个循环以读取 R 中的立体声波文件,但我不确定是否应该使用 for.loop 或 while.loop。我正在计算两个通道的 RMS。
这是一个声音文件的操作:
foo=readWave("mysound.wav")
L=foo@left
R=foo@right
rms(L)
rms(R)
现在,我的目录中充满了 2 分钟的声音文件。我想获取这些文件中的每一个,隔离通道并计算 RMS。我认为这就是它的完成方式:
mydir=list.files("directory", recursive=TRUE)
for (i in 1:length(mydir)) {
foo=readWave(mydir[i])
L=foo@left
R=foo@right
rms(L)
rms(R)
write(combine, file="test.txt", append=true, sep="\t")
}
此循环返回我的第一个声音文件不存在的错误消息。根据以下建议,我还尝试通过以下方式读取文件:
wav_files <- lapply(mydir, readWave)
Error in FUN(c("DASBR2_20131112$224708.wav", "DASBR2_20131112$224910.wav", :
File 'DASBR2_20131112$224708.wav' does not exist.
这也返回我的文件不存在。也许有更好的方法来读取波形文件? lapply 或 for.loop 可以处理波浪吗?
当我在控制台中输入 mydir 时,R 会产生以下输出:
> mydir
[1] "DASBR2_20131112$224708.wav" "DASBR2_20131112$224910.wav"
[3] "DASBR2_20131112$225110.wav" "DASBR2_20131112$225310.wav"
[5] "DASBR2_20131112$225446.wav" "DASBR2_20131112$225648.wav"
...
这是我所期望的,因为这些是我的声音文件的名称。想法?
【问题讨论】:
-
请为编程语言添加适当的标签。
-
对不起!我刚刚在 R 区。
-
欢迎来到*!查看您的个人资料显示您已经提出了一些问题,但您尚未投票或接受您收到的任何答案。也许看看this link regarding what to do when someone answers your question
-
当您在 R 控制台中输入
mydir时,输出是什么?是您期望的文件名或文件路径吗?这对我来说是一种盲目的故障排除。当我预期的文件名向量存储在 mydir 中时,在我的机器上运行 lapply(mydir, readWave)。