r 使用R中的API获取所有Airtable表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了r 使用R中的API获取所有Airtable表相关的知识,希望对你有一定的参考价值。

library(tidyverse)
library(httr)
library(jsonlite)

# API set up
api <- "https://api.airtable.com/v0/apphVdH23b9rXFd1p/"
api_key <- "keyL1Ja4L6pg3Uu9Q"    # fake api_key
tables <- c("products", "brands", "stores")

# GET request
urls <- paste0(api, tables)
resps <- lapply(urls, GET, query = list("api_key" = api_key))

# Parse JSON objects
contents <- list()
for (i in seq_along(resps)) { contents[[i]] <- content(resps[[i]], as = "text") }
jsons <- lapply(contents, fromJSON)

# Assign dataframes
df <- lapply(jsons, as.data.frame)
for (i in seq_along(df)) assign(tables[[i]], df[[i]])

# Unnest dataframes
unnest_dataframes <- function(x) {
  y <- do.call(data.frame, x)
  if ("data.frame" %in% sapply(y, class)) unnest_dataframes(y)
  y
}

for (i in seq_along(df)) assign(tables[[i]], unnest_dataframes(mget(tables)[[i]]))

# Wrangle columns names
wrangle_names <- function(df) {
  names(df) %>% 
    str_replace_all("records.", "") %>% 
    str_replace_all("fields.", "") %>% 
    tolower()
}

all_tables <- lapply(tables, get)
for (i in seq_along(tables)) { names(all_tables[[i]]) <- wrangle_names(all_tables[[i]]) }
for (i in seq_along(df)) assign(tables[[i]], all_tables[[i]])

以上是关于r 使用R中的API获取所有Airtable表的主要内容,如果未能解决你的问题,请参考以下文章

r 使用R中的GitHub API获取单个要点的完整内容

如何使用 R 中的 API 在智能合约中获取信息数据

如何从 r 中的 api 获取数据?

迭代获取数据框列的最大值,加一并重复 r 中的所有行

R语言使用data函数获取当前R环境可用的示例数据集:获取datasets包中的所有示例数据集获取所有包的数据集获取特定包的数据集

R语言获得所有Aesthetics(美学映射)参数:使用长表输出使用宽表输出