能否用R语言metan包对多性状开展GGE分析?
多性状GGE分析的可行方案
首先明确报错原因:你使用的gge函数是为单性状设计的,参数逻辑为gge(data, env, gen, resp, ...),其中resp仅支持传入单个响应变量。你直接将PROT、GY、HD依次放在参数位置时,函数会把后续的GY、HD识别为centering这类参数的输入值,但GY并非预定义的参数选项,因此触发“object 'GY' not found”错误。
以下是两种可行的解决方法:
方法1:单性状分别建模,批量绘图
这是最直接且通用的方案——因为GGE分析本身就是针对单个性状的基因型-环境互作展开的。对每个性状单独构建GGE模型,再将结果图拼接展示:
# 为每个性状单独构建GGE模型 gge_gy <- gge(x, LOC, CODE, GY, svp = "symmetrical") gge_prot <- gge(x, LOC, CODE, PROT, svp = "symmetrical") gge_hd <- gge(x, LOC, CODE, HD, svp = "symmetrical") # 安装并加载gridExtra包用于拼接图形 install.packages("gridExtra") library(gridExtra) # 给每个图添加标题并拼接展示 p_gy <- plot(gge_gy, type = 3, max_overlaps = 5) + ggtitle("籽粒产量 (GY)") p_prot <- plot(gge_prot, type = 3, max_overlaps = 5) + ggtitle("蛋白质含量 (PROT)") p_hd <- plot(gge_hd, type = 3, max_overlaps = 5) + ggtitle("抽穗期 (HD)") grid.arrange(p_gy, p_prot, p_hd, ncol = 2)
方法2:多变量GGE联合分析
如果需要整合多性状信息做联合GGE分析,可借助多变量扩展工具。先对多性状做标准化(消除量纲差异),再用mvGGE包实现多变量GGE模型:
# 安装并加载必要的包 install.packages(c("dplyr", "tidyr")) devtools::install_github("wolfemd/mvGGE") # 从GitHub安装mvGGE包 library(dplyr) library(tidyr) library(mvGGE) # 计算每个基因型-环境组合的性状均值(消除重复试验的影响) data_mean <- x %>% group_by(LOC, CODE) %>% summarise( GY = mean(GY), PROT = mean(PROT), HD = mean(HD), .groups = "drop" ) # 对性状做标准化处理(关键步骤,避免量纲大的性状主导分析) data_scaled <- data_mean %>% mutate(across(c(GY, PROT, HD), scale)) # 构建多变量GGE模型 mv_gge <- mvGGE( data = data_scaled, env = "LOC", gen = "CODE", resp = c("GY", "PROT", "HD") ) # 绘制多性状联合GGE图 plot(mv_gge)
注意:多变量GGE的结果解读需结合各性状权重,标准化步骤不可省略,否则量纲差异会干扰分析结果。
内容的提问来源于stack exchange,提问作者Luca Bonfiglioli
相关产品推荐
相关产品推荐

