Я пытаюсь создать пакет для загрузки, импорта и очистки данных с веб-страницы Центрального банка Доминиканской Республики c. Я сделал все кодирование в Rstudio.cloud, и все работает просто отлично, но когда я пробую функции на моем локальном компьютере, они не работают.
После копания в каждой функции я понял, что проблема был загруженный файл, он поврежден.
Я включил первые шаги функции, чтобы проиллюстрировать мою проблему.
url файла
# Packages
library(readxl)
# file url.
url <- paste0("https://cdn.bancentral.gov.do/documents/",
"estadisticas/precios/documents/",
"ipc_base_2010.xls?v=1570116997757")
# termporary path
file_path <- tempfile(pattern = "", fileext = ".xls")
# downloading
download.file(url, file_path, quiet = TRUE)
# reading the file
ipc_general <- readxl::read_excel(
file_path,
sheet = 1,
col_names = FALSE,
skip = 7
)
Error:
filepath: C:\Users\Johan Rosa\AppData\Local\Temp\RtmpQ1rOT3\2a74778a1a64.xls
libxls error: Unable to open file
Я использую временные файлы, но это не проблема, вы можете попробовать загрузить файл в ваш рабочий каталог, и проблема сохраняется.
Я хочу знать:
- Почему этот код работает в rstudio.clowd, а не локально?
- Что я могу сделать, чтобы выполнить работу? (альтернативный подход, пакеты, функции)
Кстати, я использую Windows 10
Редактировать
Ответ:
1 - Rstudio.cloud работает на linux, но для Windows мне нужно внести некоторые изменения в команду download.file()
.
2- download.file(url, file_path, quiet = TRUE, mode = "wb")
Это то, что я искал.
Теперь у меня другая проблема. Я должен придумать способ определить, работает ли функция на Linux или Windows, чтобы установить этот аргумент соответствующим образом.
Я могу написать новую функцию файла загрузки, используя вызовы if
else
on .Platform $ OS.type result.
Или я могу установить mode = "wb" для всех вызовов download.file ()?
У вас есть какие-либо рекомендации?