将来自库(rgbif)函数occ_data的列表拆分为数据帧

时间:2018-10-31 19:45:22

标签: r list dataframe

library(rgbif)
library(dplyr)

数据和脚本

splist<-c("Acantholyda serbica",
          "Acromyrmex lobicornis",
          "Anthostomella pedemontana",
          "Anthostomella sabinianae",
          "Aphelenchoides stammeri",
          "Aphrophora saratogensis")

keys <- sapply(splist, function(x) name_suggest(x)$key[1], USE.NAMES=T)

mydata<-occ_data(taxonKey=keys, hasCoordinate=TRUE, return="data")

问题来了

mydata现在是一个包含几个列表和一个称为数据的数据帧的列表

我需要将所有来自不同物种的数据帧合并到一个数据帧中

我将return =“ data”添加到了occ_data女巫中,简化了仅返回到我想要的内容的过程。但是,现在的问题是绑定不同大小的数据帧。

此循环很好地打印了数据帧

  for (i in seq(data)){
   print(data[[i]])
   }

这行不通,但是显示了我正在尝试的内容

 for (i in seq(data)){
 select(data[[i]], name, decimalLatitude, decimalLongitude) %>%
 bind_rows()
  }

我需要整理其中的几个

  cbind(c(data[[2]]$name), 
    c(data[[2]]$decimalLatitude),
    c(data[[2]]$decimalLongitude))

我正在为数百种动物做这件事,因此任何建议将不胜感激

谢谢

1 个答案:

答案 0 :(得分:0)

我在此博客文章中找到了我的问题的答案:

https://discuss.ropensci.org/t/some-thoughts-on-working-with-rgbif-occurrence-data-including-mapping/1105(谢谢sckott)

通过使用来自library(data.table)的rbindlist和lapply解决的问题

df<- rbindlist(lapply(data, function(x) x$data), fill = TRUE, use.names = TRUE)

从此处无法选择

dplyr::select(df, name, decimalLatitude, decimalLongitude)