Как связать несколько фреймов данных, полученных из веб-списков, используя для l oop? - PullRequest
0 голосов
/ 26 февраля 2020

Итак, у меня есть вектор, который в основном представляет собой список видов, таких как:

list_species<-c("Pomphorhynchus laevis","Profilicollis altmani","Leptorhynchoides thecatus","Mayarhynchus karlae","Oligacanthorhynchus tortuosa","Pseudoacanthocephalus toshimai","Corynosoma australe")

И у меня есть эта функция, которая добывает данные по нескольким экземплярам для каждого из этих видов:

library(bold)
df<-bold_seqspec(name_of_species, format = "tsv")

Я хочу использовать функцию bold_seqspe c для создания одного фрейма данных для каждого из элементов в list_species, поэтому я пытался сделать это так:

for (name_of_species in list_species){
  df<-bold_seqspec(name_of_species, format = "tsv")
  joined_dfs<-rbind(df)
}

То, что я хотел, это фрейм данных, который это сумма всех фреймов данных, которые были загружены в названии вида в list_species. Но я получаю фрейм данных с одним наблюдением, поэтому в коде должно быть что-то не так.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Поскольку вы хотите применить это для нескольких видов, вам нужно l oop над ними.

Вы можете использовать функции purrr * map.

joined_dfs <- purrr::map_df(list_species, bold::bold_seqspec)
0 голосов
/ 26 февраля 2020

Попробуйте

do.call(rbind, lapply(list_species, bold_seqspec, format = "tsv"))

Объяснение: lapply(list_species, bold_seqspec, format = "tsv") проходит по list_species и применяет bold_seqspec к каждому элементу с аргументом format = "tsv". Возвращаемый объект - это list из bold_seqspec возвращаемых объектов; предполагая, что они равны data.frame s, вы можете связать их с помощью do.call(rbind, ...), создав единый data.frame.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...