read.xlsx Ошибка в loadWorkbook (файл, пароль = пароль): не удается найти

Я пытаюсь открыть файл .xls по этой ссылке 'https://www.ons.gov.uk/file?uri=/economy/grossvalueaddedgva/datasets/regionalgvaibylocalauthorityintheuk/1997to2015/regionalgvaibylainuk.xls" с пакетом "xlsx", но похоже, не работает. Я также безуспешно пробовал другие пакеты, такие как «gdata».

install.packages('xlsx')
require('xlsx')

file <- system.file('https://www.ons.gov.uk/file?uri=/economy/grossvalueaddedgva/datasets/regionalgvaibylocalauthorityintheuk/1997to2015/regionalgvaibylainuk.xls', package = "xlsx")
res <- read.xlsx(file, 5) # read the fifth sheet

Я получаю эту ошибку: «Ошибка в loadWorkbook (файл, пароль = пароль): не удается найти»

Я также пробовал функцию read.xls(), но она тоже выдает ошибку.


person Daniel    schedule 02.04.2019    source источник
comment
system.file используется для поиска файла в пакете, но вы пытаетесь прочитать файл, который находится на веб-сайте, а не в пакете xlsx. Попробуйте скачать файл, а затем прочитать его.   -  person Kerry Jackson    schedule 02.04.2019
comment
Да, но это должно быть воспроизведено другими людьми, поэтому я должен полагаться на то, к чему у всех есть доступ.   -  person Daniel    schedule 02.04.2019
comment
Даже если я пытаюсь вставить ссылку в функцию read.xlsx, я получаю эту ошибку: Ошибка в read.xlsx(ons.gov.uk/file?uri=/economy/grossvalueaddedgva/datasets/, : аргумент 2 соответствует нескольким формальным аргументам   -  person Daniel    schedule 02.04.2019


Ответы (1)


Я думаю, что ответ от Чтение файла Excel из URL-адреса с использованием здесь можно использовать пакет readxl:

library(httr)
library(xlsx)

url1<-'https://www.ons.gov.uk/file?uri=/economy/grossvalueaddedgva/datasets/regionalgvaibylocalauthorityintheuk/1997to2015/regionalgvaibylainuk.xls'
GET(url1, write_disk(tf <- tempfile(fileext = ".xls")))
res <- read.xlsx(tf, 5)
person Kerry Jackson    schedule 02.04.2019
comment
Знаете ли вы, как установить первые строки, не относящиеся к NA, в качестве имен столбцов? - person Daniel; 02.04.2019
comment
Я бы сказал, что самый простой способ - использовать аргумент startRow при чтении файла, поэтому строка будет res <- read.xlsx(tf, 5, startRow = 3). Это будет иметь структуру data.frame, определенную на основе фактических данных. - person Kerry Jackson; 02.04.2019