小编Mas*_*Shi的帖子

R Shiny Dashboard:从本地文件和在线数据库(例如Google Sheet)上传数据

我是Shiny仪表板的初学者,我有一个困扰我很长时间的问题。
我的最终目标是将数据分配给名为“myData”的变量,但我为用户提供了从本地文件或在线文件(在我的例子中为 GoogleSheet)上传数据的选项。
下面是我的应用程序的简化版本。为了实现目标,我做了:

  1. 在“data”选项卡下,我创建了一个选择框“input_option”,以便用户可以选择上传本地数据(=“local”)或来自在线持久数据库(=“online”)的数据;
  2. 我使用“eventReactive”来获取以“input_option”的值为条件的数据;
  3. 如果用户选择从在线数据库上传数据,则数据将显示在仪表板主体中;
  4. 如果用户选择从本地文件上传数据,则仪表板主体中会显示“文件输入”框,引导用户选择本地文件。然后数据也会显示在仪表板主体的下方。

然而,问题是:

  1. 无论哪种方式,数据都无法显示在仪表板主体中。我什至不知道数据是否已成功获取;
  2. 当我选择上传在线数据然后关闭应用程序时,R控制台不会暂停而是继续运行。

有朋友或专家可以帮助我解决这些问题吗?我真的非常感谢你的帮助!

library(shiny)
library(shinydashboard)
library(googlesheets4)
library(googledrive)

server = function(session, input, output)
{
  # "input_option" is used to select whether input data from local or online
  input_option = reactive(
    input$select_upload
  )
  
  # Upload the data
  myData = eventReactive(
    input$select_upload,
    if(input$select_upload == "local")
    {
      req(input$file_myData)
      read.csv(
        input$file_myData$datapath, 
        header = T, 
        stringsAsFactors = F, 
        sep = input$sep_file_myData)
    }
    else if(input_option() == "online")
    {
      as.data.frame(gs4_find("myData_sample") %>% range_read())
    }
  )
  
  # display the myData data …
Run Code Online (Sandbox Code Playgroud)

user-input r shiny shinydashboard googlesheets4

2
推荐指数
1
解决办法
1296
查看次数

标签 统计

googlesheets4 ×1

r ×1

shiny ×1

shinydashboard ×1

user-input ×1