Кто-нибудь знает, как взаимодействовать с файлами .xlsx, расположенными в Dropbox, через размещенное приложение Shiny?

Я сделал относительно сложное приложение Shiny для своей работы, которое отлично работает локально. Однако я пытаюсь разместить приложение, чтобы пользователи, у которых не загружена R Studio, могли получить к нему доступ. Я не могу запустить приложение черезshiniapps.io. Кажется, это в основном связано с тем, что он не может найти файлы, расположенные в Dropbox. Приложение почти полностью основано на загрузке и записи файлов в Dropbox. Я попытался изменить пути к файлам и использовать rdrop2 для загрузки файлов, но он меняет форматирование некоторых вещей, и, насколько я могу судить, это будет довольно сложно согласовать. Я очень начинающий программист, и мысль о необходимости реструктуризации всего приложения вызывает у меня некоторое беспокойство и, безусловно, потребует изрядных усилий. Кто-нибудь знает более простой способ изменить файлы, расположенные в Dropbox, через блестящее приложение, размещенное на ShinyApps.io, желательно, сохраняя при этом возможность использовать пакет openxlsx? Заранее большое спасибо.

Один обходной путь, который, как я думал, может сработать, но не сделал, заключался в том, чтобы указать путь к файлу Dropbox для пользователя, потому что любой, кто использует приложение, должен иметь доступ к Dropbox:

this.data ‹- as.data.frame(read.xlsx(paste(C:\Users\, Sys.info()[[user]], \Dropbox\остальная часть пути к файлу, sep = )))


person reidj    schedule 04.12.2020    source источник
comment
Если это общедоступные (открытые) данные, вы можете рассмотреть возможность использования платформы открытых данных.   -  person HubertL    schedule 05.12.2020
comment
@HubertL это возможно. Вы имеете в виду перенос моих собственных данных на открытую платформу? Вы рекомендуете какие-то конкретные платформы? Спасибо.   -  person reidj    schedule 05.12.2020
comment
Google, AWS, GitHub...   -  person HubertL    schedule 05.12.2020
comment
@HubertL Спасибо за ваши предложения. К сожалению, данные содержат имена и номера телефонов, поэтому я могу изучить это только в крайнем случае.   -  person reidj    schedule 05.12.2020
comment
Если вы показываете публично на Shinyapps.io...   -  person HubertL    schedule 05.12.2020
comment
@HubertL, это хороший момент. Полагаю, я считал приложение полуприватным, поскольку не все знали, как получить к нему доступ.   -  person reidj    schedule 05.12.2020
comment
то же самое для github, google или aws, так как это будет посреди множества других наборов данных. Но полу-частное не является частным. Я бы порекомендовал частный хостинг приложения и данных.   -  person HubertL    schedule 05.12.2020


Ответы (1)


Отказ от ответственности: я бы не рекомендовал полагаться на URL-адреса, не отправленные Google, чтобы гарантировать конфиденциальность.

Измените ссылку общего доступа, скопированную из DropBox, заменив dl=0 на dl=1, чтобы загрузка начиналась, а не отображалась в пользовательском интерфейсе DropBox.

Затем вы можете download.file() в tempfile() до read.xlsx() этого:

library(shiny)
library(openxlsx)
library(DT)

ui <- fluidPage(
  titlePanel("XL Read from dropbox"),
  mainPanel( DTOutput("dt"))
)

server <- function(input, output) {
  tmpfile <- tempfile(fileext='.xlsx')
  download.file(url = "https://www.dropbox.com/s/1v0l...5u803a9hg/my_file.xlsx?dl=1", destfile = tmpfile , mode="wb")
  output$dt <- renderDT(read.xlsx(outfile))
}

shinyApp(ui = ui, server = server)
person HubertL    schedule 05.12.2020