【问题标题】:How to bind several data frames obtained from web scraping, using a for loop?如何使用 for 循环绑定从网络抓取中获得的多个数据帧?
【发布时间】:2020-02-25 23:37:47
【问题描述】:

所以我有一个基本上是物种列表的向量,例如:

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_seqspec函数为list_species中的每个元素创建一个数据框,到目前为止我尝试过这样:

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

我想要的是一个数据框,它是在 list_species 中的物种名称中下载的所有数据框的总和。 但是我得到的是一个带有一个观察值的数据框,所以代码中一定有问题。

【问题讨论】:

    标签: r


    【解决方案1】:

    由于您想将其应用于多个物种,因此您需要遍历它们。

    您可以使用purrrmap 函数。

    joined_dfs <- purrr::map_df(list_species, bold::bold_seqspec)
    

    【讨论】:

      【解决方案2】:

      试试

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

      解释:lapply(list_species, bold_seqspec, format = "tsv") 循环通过list_species 并将bold_seqspec 应用于每个带有参数format = "tsv" 的元素。返回对象是listbold_seqspec 返回对象;假设它们是data.frames,您可以使用do.call(rbind, ...) 对它们进行行绑定,生成单个data.frame

      【讨论】:

        猜你喜欢
        • 2023-02-06
        • 2016-12-13
        • 2019-11-28
        • 1970-01-01
        • 2021-11-07
        • 2020-06-24
        • 1970-01-01
        • 1970-01-01
        • 2021-10-15
        相关资源
        最近更新 更多