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

使用betapart::decay.model报错:维度数量不正确问题咨询

问题:使用betapart::decay.model运行距离衰减模型时出现维度错误报错

我尝试基于betapart::beta.pair(v1.5.6)量化的beta多样性数据,以及vegan::dist(v2.5-7)从海拔数据框计算得到的海拔距离,运行距离衰减模型。调用betapart::decay.model时出现如下报错:

Error in x[1:6, , drop = FALSE] : incorrect number of dimensions

我的数据均为维度一致的dist对象,因此对出现该报错感到困惑。请问这是当前betapart版本的问题吗?

可复现代码

# dissimilarity matrix    
r1 = c(NA, 0.2558140, 0.5675676, 0.4594595, 0.3636364)
r2 = c(0.2558140, NA, 0.5789474, 0.4736842, 0.4222222)
r3 = c(0.5675676, 0.5789474, NA, 0.6875000, 0.6410256)
r4 = c(0.4594595, 0.4736842, 0.6875000, NA, 0.5384615)
r5 = c(0.3636364, 0.4222222, 0.6410256, 0.5384615, NA)
        
dissim_mat = rbind(r1,r2,r3,r4,r5)
rownames(dissim_mat) = c("s1","s2","s3","s4","s5")
colnames(dissim_mat) = c("s1","s2","s3","s4","s5")
dissim_mat = vegan::as.dist(dissim_mat)

# elevational distance
r1 = c(NA,10,50,100,90)
r2 = c(10,NA,40,90,80)
r3 = c(50,40,NA,50,40)
r4 = c(100,90,50,NA,10)
r5 = c(0,80,40,10,NA)

elev_mat = rbind(r1,r2,r3,r4,r5)
rownames(elev_mat) = c("s1","s2","s3","s4","s5")
colnames(elev_mat) = c("s1","s2","s3","s4","s5")

elev_mat = vegan::as.dist(elev_mat)

# run distance decay model
test <- betapart::decay.model(y = dissim_mat,
                    x = elev_mat,
                    model.type="power",
                    y.type="dissim",
                    perm=10
                    )

原因与解决方案

这不是betapart版本的问题,而是decay.model的参数要求:它需要**矩阵格式(matrix)**的距离数据,而非dist对象。dist对象本质是一维向量,仅存储了下三角/上三角的距离值,而函数内部使用了二维矩阵的索引方式(如x[1:6, , drop = FALSE]),因此会触发维度错误。

修正方法很简单,将两个dist对象转换为矩阵即可:

# 将dist对象转为matrix
dissim_mat_matrix <- as.matrix(dissim_mat)
elev_mat_matrix <- as.matrix(elev_mat)

# 重新运行模型
test <- betapart::decay.model(y = dissim_mat_matrix,
                    x = elev_mat_matrix,
                    model.type="power",
                    y.type="dissim",
                    perm=10
                    )

运行修正后的代码即可正常拟合距离衰减模型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 05:45:40