有没有一种方法可以将第一列定义为R vegan软件包中用于标本的站点名称,以避免错误?

问题描述 投票:-1回答:1

在这里苦苦挣扎的业余程序员。在我的数据集中,我的第一列是站点名称,称为Tech 1到Tech8。其余各列分别分配给一个物种,下面用二进制0或1表示它们在每个站点中的存在。每次我使用specaccum函数时,它都会返回“ colSums(x)中的错误:'x'必须是数字”。删除第一列只会导致一个站点和错误,但是删除该列只会导致更多错误。如何操作数据框,使第一列成为站点名称?在此先感谢

r dataframe vegan
1个回答
0
投票

这是一个简单的解决方案

library(vegan)

#I suppose your data is something like this
df<-data.frame(Sites = paste("Tech",1:20),
           Sp1 = rep(c(1,0),each=10),
           Sp2 = rep(c(1,0,0,1),each=5),
           Sp3 = rep(c(0,1,0,1),each=5))

#Change df from data.frame to numeric matrix, excluding the first column
mat<-data.matrix(df[,-1])
#Add first column as row names
row.names(mat)<-df[,1]
#Apply specaccum function
specaccum(mat)
© www.soinside.com 2019 - 2024. All rights reserved.