我正在使用R中的pavo软件包分析花朵的色谱,需要对同一物种的所有光谱求平均值。光谱全部集中在一个文件夹中,因此我需要分别阅读所有光谱并将其取平均值,以便最终得到每种植物物种的一个平均光谱。我对每种物种有不同数量的光谱。
我如何指定我要基于的聚合光谱(例如) 每个频谱的前四个字母?在下面的示例中,我想汇总所有多gal光谱和所有larcun光谱。的 pavo手册对我没有帮助,我在此看不到有关pavo的任何帖子 论坛。预先感谢您的帮助。
我尝试使用aggspec函数,因为我没有设法根据每个质谱图文件名的首字母进行汇总。
到目前为止,我只设法读取所有光谱,绘制它们,并分别获取每个文件所需的变量(色相,色度,色度),但我需要按物种对光谱进行平均。
library(pavo)
#I create fake spectra, for two individuals of polygal species and three of larcun species
wl = seq(300, 560, 10)
polyg1 = c(2.381, 2.758, 2.923, 2.883, 3.127, 3.365, 3.364, 3.341, 3.42, 3.507, 3.534, 3.654, 3.782, 3.96, 4.125, 4.4, 4.691, 5.275, 5.888, 6.563, 7.275, 8.138, 8.866, 9.591, 10.121, 10.565, 10.895)
polyg22 = spec1 + runif(27, 0, 2)
larcun1 = spec1 + runif(27, 0, 2)
larcun2 = spec1 + runif(27, 0, 2)
larcun3 = spec1 + runif(27, 0, 2)
all.specs = cbind (wl, polyg1, polyg22, larcun1, larcun2, larcun3)
spectra1 = as.rspec(all.specs, interp = FALSE)
spectra.smooth = procspec(spectra1, opt = "smooth")
plot(spectra.smooth)
explorespec(spectra.smooth)
答案 0 :(得分:0)
考虑使用pavo::aggspec
的特殊 by 变体:
by
... ...一个向量,其中包含光谱数据框中各列的标识(在这种情况下,该功能将应用于 每组光谱具有相同的标识);
具体来说,创建一个字符向量,以标记所需的种类,这些种类按列标题的前五个字母分组。注意: wl (如果存在)在此调用中将被忽略。
species <- substr(names(spectra.smooth), 1, 5)
species_agg <- aggspec(spectra.smooth, by=species, FUN=mean)
输出(以列标题作为字符向量中的值)
species_agg
# wl species1 species2 species3 ...
# 1 100 ##.#### ##.#### ##.####
# 2 101 ##.#### ##.#### ##.####
# 3 102 ##.#### ##.#### ##.####
# ...