如何在不重复 R 代码的情况下将数据放入数据框中?
How to Put Data into Data Frames Without Repeating Code in R?
我有一个 url,可以通过在 updated_url
中手动输入内容来更新。然后,从这个 url 中提取数据并将其放入 tibble。
但是,我当前的代码看起来效率低下,因为它是重复的。有没有办法,例如把它放在一个循环中,这样它就不会重复了?本质上,我只想在更新的 url 位中输入一些内容(这里是 X 和 Y)并返回两个小标题(tibble1
和 tibble2
),而不必重复小标题代码.
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()
)
我有一个 url,可以通过在 updated_url
中手动输入内容来更新。然后,从这个 url 中提取数据并将其放入 tibble。
但是,我当前的代码看起来效率低下,因为它是重复的。有没有办法,例如把它放在一个循环中,这样它就不会重复了?本质上,我只想在更新的 url 位中输入一些内容(这里是 X 和 Y)并返回两个小标题(tibble1
和 tibble2
),而不必重复小标题代码.
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()
)