使用phyloseq的plot_ordinate绘制NDMS图时提示$运算符不适用于S4类
报错翻译与排查解决步骤
原报错翻译:
input$map_loaded 错误:该S4类对象未定义$运算符
排查及解决方法
- 优先修正排序方法拼写错误
你代码中ordinate函数的method参数写的是"NDMS",属于拼写错误,正确的非度量多维尺度分析参数为"NMDS"。部分旧版本phyloseq对拼写错误的容错性较高,近期如果升级过包就会触发报错,先修改该参数重新运行验证:
# 修正后的排序代码 dist <- phyloseq::distance(rf.indpig.decomp, method="bray") ordination <- ordinate(rf.indpig.decomp, method="NMDS", distance=dist) plot_ordination(rf.indpig.decomp, ordination, color="decomp.stage",shape="location")
- 验证输入对象完整性
运行以下代码确认phyloseq对象和分组列均有效:
# 确认对象为phyloseq类 class(rf.indpig.decomp) # 确认分组列存在,无拼写错误 sample_variables(rf.indpig.decomp)
如果输出结果不是phyloseq类,或者返回的分组列中没有decomp.stage、location,则需要重新构建你的rf.indpig.decomp对象。
- 修复包版本兼容性问题
如果你近期更新过R、phyloseq或ggplot2,版本不匹配会触发该类S4对象访问报错,可强制重装匹配版本的phyloseq:
if (!require("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("phyloseq", force = TRUE)
- 替代绘图方案
如果上述方法都无法解决,可以手动提取坐标用ggplot2直接绘图,绕开plot_ordinate函数:
# 提取NMDS坐标并合并分组信息 library(ggplot2) nmds_dat <- data.frame(ordination$points, sample_data(rf.indpig.decomp)) # 绘制NMDS图 ggplot(nmds_dat, aes(x = MDS1, y = MDS2, color = decomp.stage, shape = location)) + geom_point(size = 3) + theme_minimal()
内容的提问来源于stack exchange,提问作者vmc333
相关产品推荐
相关产品推荐

