R 上载到Shiny并将其分配给环境以供进一步使用

R 上载到Shiny并将其分配给环境以供进一步使用,r,shiny,R,Shiny,我试图创建一个闪亮的仪表板,用户可以上传数据集,命名它们,然后从下拉菜单中选择一个数据集 我不完全理解用户如何上传、保存和进一步访问数据。我尝试使用assign,但数据集没有显示在ls下。我的尝试: 使用assign可能很困难,因为通过命名空间的搜索路径可能很难预测。更好的解决方案是将数据集存储在反应值列表中,并从那里访问它们。可以根据存储在“反应值”列表中的数据集的名称动态呈现数据集选择器UI 如果互动{ 用户界面 library(data.table) library(shinyWidget

我试图创建一个闪亮的仪表板,用户可以上传数据集,命名它们,然后从下拉菜单中选择一个数据集

我不完全理解用户如何上传、保存和进一步访问数据。我尝试使用assign,但数据集没有显示在ls下。我的尝试:

使用assign可能很困难,因为通过命名空间的搜索路径可能很难预测。更好的解决方案是将数据集存储在反应值列表中,并从那里访问它们。可以根据存储在“反应值”列表中的数据集的名称动态呈现数据集选择器UI

如果互动{ 用户界面
library(data.table)
library(shinyWidgets)
library(shinydashboard)


if (interactive()) {

  ui <- fluidPage(
    sidebarLayout(
      sidebarPanel(
        fileInput("file1", "Choose CSV File",
                  accept = c(
                    "text/csv",
                    "text/comma-separated-values,text/plain",
                    ".csv")
        ),

        actionButton('show_ls', 'show_ls'),

                         # Name data

        textInput('name_data', 'Store data as' , value = ''),

                         # Action button to upload

        actionButton('upload_data', 'Upload and save data')



        ),

      mainPanel(
        tableOutput('ls')
        #  textOutput('ls'))
      )
    )
  )



  server <- function(input, output, session) {

    # This part uploads one row from the file, so the user can selects columns and choose name of the file

    data <- reactive({
      file1 <- input$file1

      if(is.null(file1)){return()}

      data_input <- fread(file=file1$datapath, sep=",")

      updateTextInput(
        session,
        'name_data',
        value = file1$name
      )

      return(data_input)


    })



    #### ASSIGNING THE DATA

    assign_data <- eventReactive(input$upload_data, {

      assign(input$name_data, data(), envir = .GlobalEnv)

    })

    assign_the_data <- reactive(assign_data())


    output$contents <- renderTable({

      if(is.null(data())) return(NULL)

      data()

    })

    outputOptions(output, 'contents', suspendWhenHidden = FALSE)

    show_ls <- eventReactive(input$show_ls, {data.frame(a = ls(.GlobalEnv))})

    output$ls <- renderTable({

      show_ls()

    })





  }

  shinyApp(ui, server)
}