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表的主要内容,如果未能解决你的问题,请参考以下文章