[英]R: Read file or sheet name of a csv file
在 R 中導入 a.csv 文件時,是否可以讀出文件名或工作表名稱? 我通過點擊 url 生成了 a.csv: https://www.populationpyramid.net/api/pp/4/2019/?
該文件的名稱為“Afghanistan-2019”,工作表名稱相同。 現在我嘗試使用 R 做同樣的事情
library(readr)
df <- read_csv("https://www.populationpyramid.net/api/pp/4/2019/?csv=true")
但是,這只能讓我訪問數據,但我丟失了文件/工作表名稱的信息。 有什么建議么?
您可以使用excel_sheets
package 中的readxl
function 來獲取 excel 文件中包含的所有工作表的字符向量。
編輯:
抱歉,我現在意識到您正在下載 CSV 文件。 CSV 文件是平面文件,因此沒有任何工作表名稱,因此您唯一的選擇是文件名。 由於您實際上是在查詢 API,因此您可以使用httr
package 來發送GET
請求:
library(httr)
library(stringr)
res <- httr::GET("https://www.populationpyramid.net/api/pp/4/2019/?csv=true")
這會給你一個response
object ,其中包含所有有趣的信息 - 包括實際數據(duh)和文件名。
可以獲取content
為function的數據:
httr::content(res)
#> # A tibble: 21 x 3
#> Age M F
#> <chr> <dbl> <dbl>
#> 1 0-4 2891330 2747452
#> 2 5-9 2765393 2636519
#> 3 10-14 2614937 2501560
#> 4 15-19 2321520 2197654
#> 5 20-24 1950650 1843985
#> 6 25-29 1551332 1433056
#> 7 30-34 1255855 1138037
#> 8 35-39 1033269 954327
#> 9 40-44 834402 758533
#> 10 45-49 649695 603870
#> # … with 11 more rows
要檢索文件名,我們需要更有創意。 文件名存儲在res
object 的headers
部分的content-disposition
元素中:
res$headers$`content-disposition`
#> [1] "attachment; filename=Afghanistan-2019.csv"
我們可以使用正則表達式提取它,該表達式會提取第一個=
之后的所有文本:
stringr::str_extract(res$headers$`content-disposition`, "(?<=\\=).*")
# [1] "Afghanistan-2019.csv"
由於response
對象應始終在相同的位置包含相同的信息(尤其是從相同的 API 檢索時),因此您可以輕松地自動化此過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.