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

#r #shiny #dropbox #openxlsx

#r #блестящий #dropbox #openxlsx

Вопрос:

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

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

это.данные <- as.data.frame(read.xlsx (вставить(«C:Users «, Sys.info ()[[«пользователь»]], «Dropbox остальной путь к файлу», sep = «»)))

Комментарии:

1. Если это общедоступные (открытые) данные, вы можете рассмотреть возможность использования платформы открытых данных

2. @HubertL это может быть возможно. Вы имеете в виду перенос моих собственных данных на открытую платформу? Вы рекомендуете какие-либо конкретные платформы? Спасибо.

3. Google , AWS , GitHub

4. @HubertL Спасибо за ваши предложения. К сожалению, данные содержат имена и номера телефонов, поэтому я могу использовать это только в крайнем случае.

5. Если вы публично показываете на shinyapps.io …

Ответ №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)