首页 > 解决方案 > 在 vegan 包中保留行名

问题描述

我正在使用vegdist()包中的vegan来计算 Morisita 的相似度指数。我的数据在第一列中存储了站点名称。

TCR 3   0   0   0   
MTF 0   1   2   0   
UTZ 0   1   0   1   
MTC 0   0   0   0   
TMC 0   0   0   0   
RLK 0   0   0   0

因为vegdist不接受非数字数据,所以我必须通过指定来删除站点名称data[-1]

vegdist(data[-1 ], method='morisita')

这很好用,但是我显然没有任何站点名称:

           1          2          3          4          5
2 0.02701298                                            
3 0.30256065 0.31838705                                 
4 0.00000000 0.02279212 0.27784052                      
5 0.25158180 0.33946880 0.54253442 0.29648698           
6 0.03720930 0.03925893 0.35777998 0.03406440 0.40862423

根据我的数据和我认为的网站,其中一些数字似乎不正确。所以我有网站名称来确认哪个是哪个是非常重要的。使用时如何保留我的站点名称vegdist()

作为说明,我能够在使用时保留站点名称diversity(),也来自vegan,这样:

plyr::ddply(data, ~site, function(x) {
           data.frame(simpson=diversity(x[-1], index='simpson'))
   })

但我无法弄清楚如何适应它vegdist()

标签: rvegan

解决方案


这就是制作基本 R 行名属性的目的。

rownames(data) <- data[,1]
data <- data[,-1]
data
#    V2 V3 V4 V5
#TCR  3  0  0  0
#MTF  0  1  2  0
#UTZ  0  1  0  1
#MTC  0  0  0  0
#TMC  0  0  0  0
#RLK  0  0  0  0

现在,当您使用所有这些功能时,vegan您会得到更有用的结果。

library(vegan)
vegdist(data,method='morisita')
#    TCR MTF UTZ MTC TMC
#MTF   1                
#UTZ   1   0            
#MTC NaN NaN NaN        
#TMC NaN NaN NaN NaN    
#RLK NaN NaN NaN NaN NaN

推荐阅读