如何在不重复 R 代码的情况下将数据放入数据框中?

How to Put Data into Data Frames Without Repeating Code in R?

我有一个 url,可以通过在 updated_url 中手动输入内容来更新。然后,从这个 url 中提取数据并将其放入 tibble。

但是,我当前的代码看起来效率低下,因为它是重复的。有没有办法,例如把它放在一个循环中,这样它就不会重复了?本质上,我只想在更新的 url 位中输入一些内容(这里是 X 和 Y)并返回两个小标题(tibble1tibble2),而不必重复小标题代码.

updated_url <- url_function('X')

tibble1 <- fromJSON(update_url) %>% 
  pluck(2) %>% 
  as_tibble()

updated_url <- url_function('Y')

tibble2 <- fromJSON(update_url) %>% 
  pluck(2) %>% 
  as_tibble()

感谢帮助!

为要传递给 url_function 的所有内容创建一个向量,我将其命名为 vec。然后使用 for 循环将每个 table 添加到列表中(您可以使用 assign 为每个小标题创建一个变量,但我不推荐它):

newlist <- list()
for(i in vec){
  updated_url <- url_function(i)

  tibble <- fromJSON(update_url) %>% 
    pluck(2) %>% 
    as_tibble()

  newlist[[i]] <- tibble}

这是一道简单的循环题。有很多方法可以在 R 中执行循环,但我认为惯用的方法是在此处使用 lapply 函数:

vec <- c("X", "Y")

tb_list <- lapply(vec, function(x) {
  updated_url <- url_function(x)
  fromJSON(update_url) %>% 
    pluck(2) %>% 
    as_tibble()
})

tb_list 将是一个小标题列表,vec.

的每个元素都有一个小标题

使用 purrr

中的 map
library(purrr)
library(dplyr)
map(vec, ~   url_function(.x)
              fromJSON(.) %>% 
             pluck(2) %>% 
             as_tibble()
    )