разделить списки из библиотечной (rgbif) функции occ_data на фрейм данных - PullRequest
0 голосов
/ 31 октября 2018
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()
  }

Мне нужно связать несколько из них

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

Я делаю это для сотен видов, поэтому любые предложения будут оценены

Спасибо

1 Ответ

0 голосов
/ 02 ноября 2018

Я нашел ответ на свой вопрос в этом сообщении в блоге:

https://discuss.ropensci.org/t/some-thoughts-on-working-with-rgbif-occurrence-data-including-mapping/1105 (спасибо, Скотт)

проблема решена с помощью rbindlist из библиотеки (data.table) и lapply

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

и отсюда я могу выбрать

dplyr::select(df, name, decimalLatitude, decimalLongitude)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...