使用vegan包计算Simpson多样性指数时如何保留生境列?
保留生境列计算Simpson多样性指数的方法
当然可行,问题根源在于diversity()函数要求输入纯数值型数据,而你的数据集包含字符型的hab列,直接传入整个数据框会触发报错。只需单独提取物种数值列计算指数,再与生境列合并即可,以下是具体实现方案:
方法1:使用dplyr管道流(推荐)
library(vegan) library(dplyr) data_simp %>% mutate(simpson_index = diversity(select(., Sp1:Sp2), "simp")) %>% select(hab, simpson_index)
select(., Sp1:Sp2)提取所有物种数值列,传给diversity()计算指数mutate()新增simpson_index列存储计算结果- 若需保留原物种列,可去掉最后一行
select()代码
方法2:Base R 实现
library(vegan) # 针对物种列计算Simpson指数 simp_indices <- diversity(data_simp[, -1], "simp") # 合并生境列与指数列生成新数据集 result_df <- data.frame(hab = data_simp$hab, simpson_index = simp_indices)
运行上述代码后,你将得到包含生境名称和对应Simpson多样性指数的新数据集,完全匹配需求。
内容的提问来源于stack exchange,提问作者Alice
相关产品推荐
相关产品推荐

