CCA分析:weighted.mean.default(newX [,i],...)出错:'x'和'w'必须具有相同的长度

时间:2014-07-01 16:07:58

标签: r analysis vegan correspondence

我对R来说很新,这可能是一个非常愚蠢的问题,但我现在很困惑。

我目前正在尝试对我的数据进行规范对应分析,以了解哪些环境因素对社区分布有更大的影响。我正在使用纯素包。我的数据包括环境因子表(数据集EFamoA)和丰度矩阵(数据集AmoA)的另一个表。我有41个土壤,有39个环境因子和334种。 在清理了任何非数字变量的数据后,我尝试使用公式表示法执行cca分析:

CCA.amoA <- cca (AmoA ~ EFamoA$PH + EFamoA$LOI, data = EFamoA, 
scale = TRUE, na.action = na.omit)

但后来我收到了这个错误:

Error in weighted.mean.default(newX[, i], ...) : 
'x' and 'w' must have the same length

我真的不知道从哪里开始,并且在任何地方都没有找到太多关于这个问题的东西(这让我觉得它一定是我正在做的某种非常基本的错误)。我的环境因素数据没有标准化,因为算法在cca帮助文件中使用了红色,但我可能之前应该将其标准化吗? (我也是红色,比例= TRUE仅适用于物种)。我应该将数据转换为矩阵吗?

我希望我明确表达自己的观点,因为我现在已经挣扎了一段时间。

编辑:我的环境数据有NA值

1 个答案:

答案 0 :(得分:0)

好吧,所以我能够自己解决这一切,这确实是一件愚蠢的事情,结果我的丰富数据有土壤作为列和物种作为行,而环境因素(EF)数据有土壤作为行和EF作为专栏。

在我的数据上使用t(),我转换了我的data.frame(并将其并行转换为矩阵)并cca()工作(我认为“长度”是相同的)。单独转置数据并加载已经转置的数据也可以。 虽然t()方法可能省去了创建一个全新文件的需要(如果您的数据是按照我的情况使用不同的行进行组织的),它会将数据转换为矩阵,在某些情况下可能不需要这样做无论哪种方式,这都是一个非常简单明显的解决方法(虽然花了我一段时间)。