Я пытаюсь создать пакет для загрузки, импорта и очистки данных с веб-страницы Центрального банка Доминиканской Республики. Я выполнил все кодирование в Rstudio.cloud, и все работает отлично, но когда я пробую функции на своем локальном компьютере, они не работают.
Немного покопавшись в каждой функции, я понял, что проблема была в загруженном файле, он поврежден.
Я включаю первые шаги функции только для того, чтобы проиллюстрировать мою проблему.
# 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
вызовы результата .Platform$OS.type.
Или я могу установить mode = "wb" для всех вызовов download.file()?
У вас есть какие-нибудь рекомендации?