使用Purrr包运行SSDM时为各物种Ensemble.SDM输出添加对应物种名
问题原因
你之前尝试的代码错误原因是label <- as.character(data)将筛选后的完整物种数据框转为了字符格式,才会输出大量和物种名无关的行号、字段内容。实际上迭代参数.x本身就是当前循环调用的物种名,直接调用即可。
解决代码
首先给待迭代的物种列表加上自身作为名称,让最终输出的列表自带物种名索引:
# 生成带自身命名的物种列表 limit_list_of_species <- unique(Occ_full$NAME) %>% purrr::set_names() output <- purrr::map(limit_list_of_species, ~ { data <- Occ_full %>% filter(NAME == .x) ensemble_modelling(c('GAM'), data, Env_Vars, Xcol = 'LONGITUDE', Ycol = 'LATITUDE', rep = 1, name = .x) })
效果说明
修改后会同时实现两个命名逻辑:
- 每个
ensemble.sdm模型对象内部的name属性会自动匹配对应物种名 - 输出的
output列表的每个元素名称也和物种名一一对应,后续调用output[["物种名"]]即可直接提取对应物种的模型结果,堆叠操作可直接对列表处理无需额外匹配名称
内容的提问来源于stack exchange,提问作者Callahan475
相关产品推荐
相关产品推荐

