【问题标题】:split lists from library(rgbif) function occ_data into data frame将库(rgbif)函数 occ_data 中的列表拆分为数据框
【发布时间】:2018-10-31 19:45:22
【问题描述】:
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 现在是一个包含多个列表和一个名为 data 的数据框的列表

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

我将 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()
  }

我需要 rbind 其中几个

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

我正在为数百个物种做这个,所以任何建议都将不胜感激

谢谢

【问题讨论】:

    标签: r list dataframe


    【解决方案1】:

    我在这篇博文中找到了我的问题的答案:

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

    使用 library(data.table) 中的 rbindlist 和 lapply 解决的问题

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

    从这里我可以选择

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

    【讨论】:

      猜你喜欢
      • 2022-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-29
      • 2020-07-14
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多