如何根据光谱名称聚合pavo包(R)中的光谱
我正在用R中的pavo软件包分析花的颜色光谱,需要对同一物种的所有光谱进行平均。光谱都在一个文件夹中,所以我需要单独阅读所有光谱,并对它们进行平均,以便最终得到每个植物物种的一个平均光谱。我对每个物种都有不同数量的光谱 我如何向pavo指定我要基于的光谱聚合,例如, 每个光谱的前四个字母?在下面的例子中,我想汇总所有的polygal光谱和所有的Larchun光谱。这个 pavo手册对我没有帮助,我也没有看到任何关于pavo的帖子 论坛。提前感谢您的帮助 我尝试了aggspec函数,但我没有根据每个光谱文件名的前几个字母进行聚合 到目前为止,我只设法读取所有光谱,绘制它们,并分别获得每个文件所需的变量(色调、亮度、色度),但我需要按物种平均光谱如何根据光谱名称聚合pavo包(R)中的光谱,r,R,我正在用R中的pavo软件包分析花的颜色光谱,需要对同一物种的所有光谱进行平均。光谱都在一个文件夹中,所以我需要单独阅读所有光谱,并对它们进行平均,以便最终得到每个植物物种的一个平均光谱。我对每个物种都有不同数量的光谱 我如何向pavo指定我要基于的光谱聚合,例如, 每个光谱的前四个字母?在下面的例子中,我想汇总所有的polygal光谱和所有的Larchun光谱。这个 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)
考虑使用特殊的by变量: 由
。。。包含光谱数据框中列标识的向量(在这种情况下,函数将应用于 共享相同标识的每组光谱) 具体地说,创建一个字符向量来标记所需的物种,这些物种按列标题的前五个字母分组。注意:此调用中忽略wl(如果存在)
species <- substr(names(spectra.smooth), 1, 5)
species_agg <- aggspec(spectra.smooth, by=species, FUN=mean)
根据R标记(悬停查看):请提供最小值和所需输出。对数据使用
dput()
。那么,您能否提供一个示例:dput(head(spectra.smooth[,1:5],10))
?我现在添加了一些规范来说明我的问题。代码不是很优雅,但我成功地创建了一个简单的示例来说明我的数据是什么样子的。谢谢对它工作得很好。非常感谢你的冻糕!很高兴听到这个消息,也很乐意帮忙。一定要注意这种说法!完成。现在已经给予了适当的承认,接受了你的回答。我也尝试过为你的答案“投票”,但它说它不会显示出来,因为我没有使用太多Stackoverflow,所以我的声誉很低,无法显示我的投票。
species_agg
# wl species1 species2 species3 ...
# 1 100 ##.#### ##.#### ##.####
# 2 101 ##.#### ##.#### ##.####
# 3 102 ##.#### ##.#### ##.####
# ...