我正在用R中的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)
发布于 2019-04-23 16:08:03
考虑使用pavo::aggspec
的特殊的by变体
by ..。包含光谱数据帧中列的标识的向量(在这种情况下,函数将应用于共享相同标识的每一组光谱);
具体而言,创建一个字符向量,标记您所需的物种,按前五个列标题字母分组。注意:如果它存在,则在此调用中忽略它。
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 ##.#### ##.#### ##.####
# ...
https://stackoverflow.com/questions/55811241
复制相似问题