我的问题的简化版本:
我有一个OTU表,其中有三个站点有60个样本点(每个样本点都有不同的OTU):A,B和C.每个站点有20个样本。
我想绘制每个站点的稀疏曲线:A,B和C.我想查看站点的曲线是否稳定 - 以检查是否足够'从每个站点采集序列。
目前我正在这样做:
raremax <- min(rowSums(otu.table))
rarecurve(otu.table, sample = raremax)
目前,每个样本点都被绘制为单独的曲线 - 这不是我想要的 - 我想绘制每个采样点的整体曲线。
答案 0 :(得分:0)
对于第二种选择,您必须按地点对物种数量求和。这将忽略站点采样单元之间的所有差异(有些人称之为β多样性),并将采样单元视为简单的重复。如果要发布结果,可能需要证明您对审阅者的处理方法是正确的。
使用标准 R ,您可以使用aggregate
来获取总和。以下示例使用素食数据集mite
和mite.env
:
rarecurve(aggregate(mite, list(mite.env$Shrub), sum)[,-1])
aggregate
会添加一个您必须删除的列,并且您不会为曲线添加标签。稍微多一点的方式也会给你起名字:
rarecurve(sapply(mite, function(x) sapply(split(x, mite.env$Shrub), sum)))
rarecurve(t(sapply(split(mite, mite.env$Shrub), colSums))) # alternatively
为此,您的数据必须是data.frame
---矩阵将失败。