首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何基于光谱名称在pavo包(R)中聚合光谱

如何基于光谱名称在pavo包(R)中聚合光谱
EN

Stack Overflow用户
提问于 2019-04-23 12:28:24
回答 1查看 86关注 0票数 1

我正在用R中的pavo包分析花色光谱,并且需要平均来自同一物种的所有光谱。光谱都在一个文件夹中,所以我需要分别阅读它们,并将它们平均起来,这样我就得到了每种植物的平均光谱。我对每个物种都有不同的光谱。

我如何指定要根据每个光谱的前四个字母来聚合光谱呢?在下面的例子中,我想把所有的多聚半乳糖光谱和所有的大分子光谱综合起来。在这个论坛上,我没有看到任何关于楼阁的帖子。提前感谢您的帮助。

我尝试使用函数aggspec,我没有设法根据每个频谱文件名的前几个字母进行聚合。

到目前为止,我只成功地读取了所有光谱,绘制了它们,并分别获得了每个文件所需的变量(色调、气密性、色度),但我需要按物种平均光谱。

代码语言:javascript
运行
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-23 16:08:03

考虑使用pavo::aggspec的特殊的by变体

by ..。包含光谱数据帧中列的标识的向量(在这种情况下,函数将应用于共享相同标识的每一组光谱);

具体而言,创建一个字符向量,标记您所需的物种,按前五个列标题字母分组。注意:如果它存在,则在此调用中忽略它。

代码语言:javascript
运行
复制
species <- substr(names(spectra.smooth), 1, 5)

species_agg <- aggspec(spectra.smooth, by=species, FUN=mean)

输出(以列标题作为字符向量中的值)

代码语言:javascript
运行
复制
species_agg
#     wl  species1  species2  species3  ...
# 1  100   ##.####   ##.####   ##.####   
# 2  101   ##.####   ##.####   ##.####   
# 3  102   ##.####   ##.####   ##.####   
# ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55811241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档