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

使用vegan包rarecurve函数报错:(subscript) logical subscript too long

问题原因及解决方法

报错原因

rarecurve(vegan包)要求输入的矩阵必须是行对应样本、列对应OTU/分类单元的格式,但phyloseq的otu_table默认设置通常是行对应OTU、列对应样本(可通过taxa_are_rows()验证)。直接将这种方向的otu_table传入rarecurve时,函数会因维度不匹配触发下标逻辑长度错误。

解决方法

方法1:转置otu_table后传入

先转置otu_table,确保样本为行、OTU为列,再传入rarecurve:

data("GlobalPatterns")
# 转置otu_table,调整为样本行、OTU列的格式
otu_mat <- t(otu_table(GlobalPatterns))
# 调用rarecurve
rare <- rarecurve(otu_mat, step=100, lwd=2, ylab="OTU", label=F)

方法2:确认并调整otu_table的方向

先检查当前otu_table的方向,再调整后转换为矩阵:

data("GlobalPatterns")
# 查看otu_table的行类型(通常返回TRUE,即行是OTU)
taxa_are_rows(otu_table(GlobalPatterns))
# 调整为样本行的格式并转换为矩阵
otu_mat <- as(otu_table(GlobalPatterns, taxa_are_rows=FALSE), "matrix")
# 绘制稀释曲线
rare <- rarecurve(otu_mat, step=100, lwd=2, ylab="OTU", label=F)

额外说明

如果之前调用正常,可能是当时使用的otu_table已经是样本行的格式,或是旧版本vegan对输入格式的兼容性更强。当前版本严格要求输入矩阵的行对应样本,因此必须调整格式。

内容的提问来源于stack exchange,提问作者i.b

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:46:40