我对R有些新意,请原谅我的基本问题。
我在完整数据集上执行CCA(358个站点,40个非生物参数,100个物种观察)。
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向地图添加网站名称时,它给出了情节中的“row.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)。完整矩阵将此信息推断为额外列。 由于我无法解决行名称问题,无论如何我更加坚持使用名义数据。 原始矩阵包含第一列(样本名称,数字,但可以很容易地转换为名义)和第二列(组标识,名义),然后是生物观察。
我想拥有什么:
任何帮助表示赞赏!真的,自昨天上午以来我一直坚持:/
答案 0 :(得分:0)
我自己使用素食主义者的cca()并且我有一些你自己的问题,但是我至少能够解决你原来的“行名”问题。我正在对41种土壤的数据进行CCA分析,共有334种和39种环境因子。 在我的情况下,我使用
rownames(MyDataSet) <- MyDataSet$ObservationNamesColumn
(为了示例,我使用了默认名称,例如MyDataSet)
然而,我仍然有环境因素,而不是数字(如土壤质地)。您可以尝试检查非数字因子,以防原始数据集中出现错误,或者出于任何其他原因而未被解释为数字的非生物因子。要做到这一点,您可以使用命令str(MyDataSet)
来告诉您每个变量的性质,或者lapply(MyDataSet, class)
也可以告诉您相同但在不同的输出中。
如果您的非生物因素不是数字(再次,如纹理)并且您想要删除它们,您可以通过仅使用数值变量创建一个全新的数据集(您仍将保留您的观察名称)因为它们被定义为行名称,所以这很容易做到,可以使用类似的东西来完成:
MyDataSet.num <- MyDataSet[,sapply(MyDataSet, is.numeric)]
这将创建一个新数据集,该数据集与原始行具有相同的行,但只包含具有数值的列(变量)。然后,您应该可以使用这个新数据集继续工作。
我对R编程和统计学都很新(我是微生物学家),但我希望这有帮助!