我正在尝试在 R 中读取以下文件
https://www.ssga.com/us/en/individual/etfs/library-content/products/fund-data/etfs/us/holdings-daily-us-en-xop.xlsx
当我直接将 url 粘贴到浏览器中时,它可以工作,但由于某种原因,当它通过 R 下载时无法打开。
我已经尝试了download.file((及其所有接受的方法('lib-curl/internal/wininet/...'(
u <- 'https://www.ssga.com/us/en/individual/etfs/library-content/products/fund-data/etfs/us/holdings-daily-us-en-xop.xlsx'
download.file(u)
下载的文件不能手动打开,也不能通过 readxl::read_xlsx(( 或 gdata::read.xls(( 在 R 中打开
我也尝试过 httr 包,但似乎不支持内容类型"xlsx:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"。 但是我确实了解到该文件似乎已压缩,但我什至不确定这是否是问题所在
response <- httr:Get(u)
response$headers$`content-encoding`
"gzip"
有人可以建议我如何在 R 中下载这些数据吗?
您需要在download.file
中使用mode = "wb"
将其另存为二进制文件:
u <- 'https://www.ssga.com/us/en/individual/etfs/library-content/products/fund-data/etfs/us/holdings-daily-us-en-xop.xlsx'
tmp <- tempfile()
download.file(u, tmp, mode = "wb")
readxl::read_xlsx(tmp)
#> # A tibble: 74 x 8
#> `Fund Name:` `SPDR® S&P® Oil & Gas~ X__1 X__2 X__3 X__4 X__5 X__6
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 Ticker Symbol: XOP <NA> <NA> <NA> <NA> <NA> <NA>
#> 2 Holdings: As of 17-Jan-2020 <NA> <NA> <NA> <NA> <NA> <NA>
#> 3 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
#> 4 Name Ticker Ident~ SEDOL Weight Sector Shar~ Local~
#> 5 Apache Corporat~ APA 03741~ 20439~ 3.668~ Oil & Ga~ 2896~ USD
#> 6 Occidental Petr~ OXY 67459~ 26554~ 2.913~ Integrat~ 1639~ USD
#> 7 WPX Energy Inc. WPX 98212~ B40PC~ 2.784~ Oil & Ga~ 5668~ USD
#> 8 Concho Resource~ CXO 20605~ B1YWR~ 2.742~ Oil & Ga~ 7852~ USD
#> 9 EOG Resources I~ EOG 26875~ 23180~ 2.709~ Oil & Ga~ 8191~ USD
#> 10 Hess Corporation HES 42809~ 20237~ 2.689~ Oil & Ga~ 9922~ USD
#> # ... with 64 more rows