Purrr 包将物种名称添加到 SSDM 中的每个输出名称

Purrr package add species names to each output name in SSDM

我有一个物种列表,我是 运行 一个基于每个物种的数据集过滤的集成 SDM 建模函数,以便从数据集中为每个物种提供一个集成 SDM。

我使用 purrr 包来获取它 运行,当没有添加命名约定时,代码工作正常。但是,当它为每个物种输出 Ensemble.SDM 时,它们是都命名为相同的东西“ensemble.sdm”,所以当我想堆叠它们时,我不能,因为它们都被命名为相同的东西。

我希望能够为模型的每个输出命名一些不同的东西,最好与在行中挑选出的物种名称相关联:data <- Occ_full %>% filter(NAME == .x)

工作的代码写在下面:

list_of_species <- unique(unlist(Occ_full$NAME))

# Return unique values

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)
})

下面是我试图在其中命名的代码,但它不起作用,它用行号的很多重复来命名它。

output <- purrr::map(limit_list_of_species, ~ {
  data <- Occ_full %>% filter(NAME == .x)
  label <- as.character(data)
  ensemble_modelling(c('GAM'), data, Env_Vars,
            Xcol = 'LONGITUDE', Ycol = 'LATITUDE', rep = 1,  name = label )
})

有人可以帮我吗?我只是希望每个“输出”都以过滤器中指定的物种名称命名。谢谢

尝试使用 splitimap -

list_of_species <- split(Occ_full, Occ_full$NAME)

output <- purrr::imap(list_of_species,~{
  ensemble_modelling(c('GAM'), .x, Env_Vars,Xcol = 'LONGITUDE', 
                     Ycol = 'LATITUDE', rep = 1, name = .y)
})

split 将确保 list_of_species 被命名为可以在 imap.

中使用