我对 R 有点陌生,所以请原谅我的基本问题。
我在一个完整的数据集(358 个站点,40 个非生物参数,100 个物种观察)上执行 CCA。
library(vegan)
env <- read.table("env.txt", header = TRUE, sep = "\t", dec = ",")
otu <- read.table(otu.txt", header = TRUE, sep = "\t", dec = ",")
cca <- cca(otu~., data=env)
cca.plot <- plot(cca, choices=c(1,2))
vif.cca(cca)
ccared <- cca(formula = otu ~EnvPar1,2,n, data = env)
ccared.plot <- plot(ccared, choices=c(1,2))
orditorp(ccared.plot, display="sites")
这可以在第一列中不使用样本名称的情况下工作(最初,包含数字样本名称的第一列被解释为变量,所以我使用了没有该信息的表。当我通过 orditorp 将站点名称添加到图中时,它给出了“行。 name=n" 在图中。)但是,我想使用我的示例名称。我用示例名称信息在两个表上尝试了 row.names=1 :
envnames <- read.table("envwithnames.txt", header = TRUE, row.names=1, sep = "\t", dec = ",")
otunames <- read.table("otuwithnames.txt", header = TRUE, row.names=1, sep = "\t", dec = ",")
,以及env/otu/envnames/otunames 的任意组合。cca 在任何情况下都运行良好,但任何绘图命令都产生了
plot.ccarownames <- plot(cca(ccarownames, choices=c(1,2)))
Error in rowSums(X) : 'x' must be numeric
我的第二个问题与此有关:358 个站点分为 6 个组(4x60,2x59)。完整的矩阵将此信息推断为额外的列。由于我无法解决行名问题,无论如何,我更加坚持名义数据。原始矩阵包含第一列(样本名称,数字,但可以轻松转换为名义)和第二列(组标识,名义),然后是生物学观察。
我想拥有什么:
- 包含所有六个组的 CCA,每组着色站点。
- 仅包含一组数据的 CCA(无需手动构建单个输入表)
- 使用我的原始样本名称的 CCA 图。
任何帮助表示赞赏!真的,我从昨天早上开始就一直坚持下去:/