0

我的问题的简化版本:

我有一个 OTU 表,其中包含 60 个样本点(每个样本点都有各种 OTU 的丰度),分布在三个站点:A、B 和 C。每个站点有 20 个样本。

我想为每个站点绘制稀疏曲线:A、B 和 C。我想看看这些站点的曲线是否平稳 - 检查是否从每个站点采样了“足够”的序列。

目前我正在这样做:

raremax <- min(rowSums(otu.table))
rarecurve(otu.table, sample = raremax)

目前,每个采样点都被绘制为单独的曲线——这不是我想要的——我想绘制每个采样点的整体曲线。

4

1 回答 1

0

对于第二个选项,您必须按站点汇总物种计数。这将忽略站点间采样单元之间的所有差异(有些人称之为 beta 多样性),并将采样单元视为简单的重复。如果你想发布你的结果,你可能需要向审稿人证明你的方法是正确的。

使用标准R,您可以aggregate用来获取总和。以下示例使用纯素数据集mitemite.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--- 矩阵将失败。

于 2017-08-03T13:18:39.147 回答