You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用ordihull给NMDS图加多边形时参数长度为零报错如何解决

NMDS ordihull函数报错解决方案

报错信息

Error in if (n < 4) return(colMeans(x[-n, , drop = FALSE])) : argument is of length zero

报错原因

  • ordihull是vegan包中为排序结果生成分组凸包的函数,第一个参数要求传入排序分析的结果对象(如metaMDS生成的m3),或者完整的坐标矩阵+明确的分组参数groups
  • 原调用仅传入了两个单独的坐标列,没有指定分组变量,函数无法识别按什么维度生成凸包,导致内部计算时输入为空触发报错

可行解决方法

方法1:直接传入metaMDS结果对象+分组变量

将原来的ordihull调用替换为以下代码即可:

ordihull(m3, groups = mdat$site, label=T,
     lwd=2, draw="polygon", col= c("blue", "red", "green"))

方法2:传入坐标矩阵+分组变量

如果要直接传入计算好的NMDS坐标,写法如下:

ordihull(mdat[,c("MDS1","MDS2")], groups = mdat$site, label=T,
     lwd=2, draw="polygon", col= c("blue", "red", "green"))

可选优化:添加半透明填充

如果需要阴影多边形效果,可调整颜色透明度:

library(scales)
ordihull(m3, groups = mdat$site, label=T,
     lwd=2, draw="polygon", col= alpha(c("blue", "red", "green"), 0.3))

内容的提问来源于stack exchange,提问作者Terrible_Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:30:05