如果已经有人问过这个问题,请提前道歉,并为我对这个问题的措辞道歉,因为我是新来R的。
有没有办法让我的子采样声音文件的代码更有效率?我有来自9个站点的148个小时的录音,对于每个站点,我每5分钟子采样12个1分钟的片段。我目前的工作方式是有效的,但它非常耗时。有没有办法让这段代码更有效率?
###hour 3###
setwd("C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson")
hod3a<-readWave("20200820_020000.wav", from = 0, to = 1, units="minutes")
hod3b<-readWave("20200820_020000.wav", from = 5, to = 6, units="minutes")
hod3c<-readWave("20200820_020000.wav", from = 10, to = 11, units="minutes")
hod3d<-readWave("20200820_020000.wav", from = 15, to = 16, units="minutes")
hod3e<-readWave("20200820_020000.wav", from = 20, to = 21, units="minutes")
hod3f<-readWave("20200820_020000.wav", from = 25, to = 26, units="minutes")
hod3g<-readWave("20200820_020000.wav", from = 31, to = 32, units="minutes")
hod3h<-readWave("20200820_020000.wav", from = 35, to = 36, units="minutes")
hod3i<-readWave("20200820_020000.wav", from = 40, to = 41, units="minutes")
hod3j<-readWave("20200820_020000.wav", from = 45, to = 46, units="minutes")
hod3k<-readWave("20200820_020000.wav", from = 50, to = 51, units="minutes")
hod3l<-readWave("20200820_020000.wav", from = 55, to = 56, units="minutes")
setwd("C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (3)")
writeWave(hod3a, filename="hod3a.wav",extensible=FALSE)
writeWave(hod3b, filename="hod3b.wav",extensible=FALSE)
writeWave(hod3c, filename="hod3c.wav",extensible=FALSE)
writeWave(hod3d, filename="hod3d.wav",extensible=FALSE)
writeWave(hod3e, filename="hod3e.wav",extensible=FALSE)
writeWave(hod3f, filename="hod3f.wav",extensible=FALSE)
writeWave(hod3g, filename="hod3g.wav",extensible=FALSE)
writeWave(hod3h, filename="hod3h.wav",extensible=FALSE)
writeWave(hod3i, filename="hod3i.wav",extensible=FALSE)
writeWave(hod3j, filename="hod3j.wav",extensible=FALSE)
writeWave(hod3k, filename="hod3k.wav",extensible=FALSE)
writeWave(hod3l, filename="hod3l.wav",extensible=FALSE)
setwd("C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (3)")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (3)", resultfile = "ndsi_resultS2.csv", soundindex = "ndsi", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (3)", resultfile = "adi_results.csv", soundindex = "acoustic_diversity", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (3)", resultfile = "aei_results.csv", soundindex = "acoustic_evenness", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (3)", resultfile = "aci_results.csv", soundindex = "acoustic_complexity", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (3)", resultfile = "H_results.csv", soundindex = "H", no_cores = "-2")
###hour 4###
setwd("C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson")
hod4a<-readWave("20200820_030000.wav", from = 0, to = 1, units="minutes")
hod4b<-readWave("20200820_030000.wav", from = 5, to = 6, units="minutes")
hod4c<-readWave("20200820_030000.wav", from = 10, to = 11, units="minutes")
hod4d<-readWave("20200820_030000.wav", from = 15, to = 16, units="minutes")
hod4e<-readWave("20200820_030000.wav", from = 20, to = 21, units="minutes")
hod4f<-readWave("20200820_030000.wav", from = 25, to = 26, units="minutes")
hod4g<-readWave("20200820_030000.wav", from = 31, to = 32, units="minutes")
hod4h<-readWave("20200820_030000.wav", from = 35, to = 36, units="minutes")
hod4i<-readWave("20200820_030000.wav", from = 40, to = 41, units="minutes")
hod4j<-readWave("20200820_030000.wav", from = 45, to = 46, units="minutes")
hod4k<-readWave("20200820_030000.wav", from = 50, to = 51, units="minutes")
hod4l<-readWave("20200820_030000.wav", from = 55, to = 56, units="minutes")
setwd("C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (4)")
writeWave(hod4a, filename="hod4a.wav",extensible=FALSE)
writeWave(hod4b, filename="hod4b.wav",extensible=FALSE)
writeWave(hod4c, filename="hod4c.wav",extensible=FALSE)
writeWave(hod4d, filename="hod4d.wav",extensible=FALSE)
writeWave(hod4e, filename="hod4e.wav",extensible=FALSE)
writeWave(hod4f, filename="hod4f.wav",extensible=FALSE)
writeWave(hod4g, filename="hod4g.wav",extensible=FALSE)
writeWave(hod4h, filename="hod4h.wav",extensible=FALSE)
writeWave(hod4i, filename="hod4i.wav",extensible=FALSE)
writeWave(hod4j, filename="hod4j.wav",extensible=FALSE)
writeWave(hod4k, filename="hod4k.wav",extensible=FALSE)
writeWave(hod4k, filename="hod4l.wav",extensible=FALSE)
setwd("C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (4)")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (4)", resultfile = "ndsi_resultS2.csv", soundindex = "ndsi", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (4)", resultfile = "adi_results.csv", soundindex = "acoustic_diversity", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (4)", resultfile = "aei_results.csv", soundindex = "acoustic_evenness", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (4)", resultfile = "aci_results.csv", soundindex = "acoustic_complexity", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (4)", resultfile = "H_results.csv", soundindex = "H", no_cores = "-2")我目前必须通过每个小时的代码,并手动更改小时数,这需要大量的时间。我希望我已经正确传达了这一点,任何帮助都是非常感谢的。
发布于 2020-11-05 06:02:40
我们可以创建两个sequences并使用Map对其进行循环,使用指定from的readWave读取数据,将to作为循环的值并将其存储在list中
readLst <- Map(function(i, j)
readWave("20200820_020000.wav", from = i, to = j,
units = "minutes"), seq(0, 55, by = 5), seq(1, 56, by = 5))对于写入文件,也是如此
lapply(seq_along(readLst), function(i)
writeWave(readLst[[i]],
filename= paste0("hod3" letters[i], ".wav"), extensible=FALSE))https://stackoverflow.com/questions/64688336
复制相似问题