簡體   English   中英

R:讀取 csv 文件的文件或工作表名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM