【发布时间】:2017-09-15 16:31:22
【问题描述】:
我有一个社区矩阵(物种作为列,样本作为行),我想使用 R 的 vegan 包中的 specaccum() 和 fitspecaccum() 函数从中生成物种累积曲线 (SAC)。为了使样本 X 处得到的 SAC 和累积物种丰富度在区域之间具有可比性(我每个区域有 1 个群落矩阵),我需要让 specaccum() 在每个区域内选择相同数量的集合。我的问题是某些地区的套数比其他地区多。我想将样本大小限制为区域之间的最小集数(在我的情况下,最小集数是 45,所以我希望 specaccum() 随机采样 45 集,100 次(设置排列 = 100)对于每个地区。我想从每个地区可用的整个数据集中进行抽样。下面的代码没有工作......它不能识别“subset = 45”。素食包信息说“subset”需要合乎逻辑...我不明白子集编号如何合乎逻辑,但也许我误解了子集是什么...有另一种方法可以做到这一点吗?运行 specaccum() 就足够了可用于每个区域,然后将输出截断为 45?
require(vegan)
pool1<-specaccum(comm.matrix, gamma="jack1", method="random", subet=45, permutations=100)
非常感谢任何帮助。
【问题讨论】:
-
写
subset而不是subet会有帮助吗?无论如何,手册页说subset是logical expression indicating sites (rows) to keep。因此,如果您有n"sets" 并且您想选择其中的 45 个,则您需要一个逻辑变量,即TRUE用于 45 个案例,FALSE用于其他案例:这 45 个具有TRUE值的将是您子集。要随机混合您需要的情况,请使用sample置换subset向量。请注意permutations是指一个subset内的case排列数,即不会改变排列之间的subset。