是否可以在 R 中循环搜索和保存来自 spocc() 的结果输出?



我有一个作业,要求我搜索一个区域内发生的物种发生数据点(SEA(。我有一个49种鲨鱼物种的列表要搜索,我正在尝试用R编写代码来自动化事情。

我找到了一个可以搜索物种发生数据"spocc"包的包,其中包含occ()功能。occ()函数的结果是一个包含元数据和发生数据的大型列表。因此,为了访问我想要的数据行,我需要提取它们。

我的代码是为搜索一个物种而编写的,目前看起来像这样:

df <- occ(query = "hammerhead shark", from = c('gbif'), limit = 3))

df_gbif <- df$gbif$data$hammerhead_shark %>%
coord_impossible(., lat ='latitude', lon = 'longitude', drop = TRUE) %>%
coord_unlikely(., lat ='latitude', lon = 'longitude', drop = TRUE) %>%
filter(., latitude < 31.2 &  latitude > -12.4) %>%
filter(., longitude > 89 & longitude < 153)

write.xlsx(df_gbif, file = "hammerhead_shark.xlsx")

我想知道是否有办法循环整个过程:搜索 49 个物种的物种发生数据点,提取相关结果并将结果保存在 excel 文件中。

可能有点晚了,但你可以修改它以循环你的 49 个物种。

library(tidyverse)
library(spocc)
# Species to serche for
species<- data.frame(species=c("Agrilus planipennis", "Anopheles gambiae"))
# empty data frame
df<- data.frame(name=NA, longitude=NA, latitude=NA)
# species to loop over 
sp_list<- unique(species$species)
for (i in sp_list){
out<-spocc::occ(query=i , from="gbif", has_coords = T, limit=50000)
out_df<-spocc::occ2df(out)
out_df <- dplyr::select(out_df, name, longitude, latitude)
complete<-dplyr::bind_rows(df, out_df) %>% na.omit()
}
head(complete)

最新更新