【问题标题】:using drop down bottom in shiny to loaed files from a folder使用闪亮的下拉按钮从文件夹加载文件
【发布时间】:2018-09-08 10:14:46
【问题描述】:

我正在使用闪亮从某个文件夹上传不同的数据文件并根据某个列绘制直方图。每个文件的名称类似于"30092017ARB.csv" (date + ARB.csv)。 代码循环遍历数据文件夹中的所有文件名,并在下拉底部打印文件名。选择文件名后,它应该被上传并绘制mw-column 的直方图(列的名称是“mw”)。我的 GUI 如下所示:

library("shiny")
  dataset <- list.files("C:/R_myfirstT/data", pattern=".*.csv$")
# Define UI for dataset viewer app ----
ui <- fluidPage(


  # App title ----
  titlePanel("Data plot"),

  # Sidebar layout with input and output definitions ----
  sidebarLayout(

    # Sidebar panel for inputs ----
    sidebarPanel(

      # Input: Selector for choosing dataset ----
      selectInput(inputId = "date",
                  label = "Choose a date:",
                  choices = dataset)

    ),

    # Main panel for displaying outputs ----
    mainPanel(
  plotOutput("plot")
     )
  )
)

和服务器

# Define server  ----
dataset <- list.files("C:/R_myfirstT/data", pattern=".*.csv$")
dat.name<-paste("C:/R_myfirstT/data/",dataset,sep = "")

server <- function(input, output) {

  datasetInput <- reactive({
    switch(input$dataset,
           for (i in 1:length(dataset)){
             toString(dataset[i])=read.csv(file=dat.name[i], header=TRUE, sep=";")
           }
          )
    output$plot <- renderPlot({
      hist(dataset.mw, breaks = 40)
    })
  })

}

我的问题是:我没有得到任何直方图!我得到的只是,这很好,但不完全是我的目标! 知道可能是什么原因吗?

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    这样的工作:

    ui.R

    library("shiny")
    
    # Define UI for dataset viewer app ----
    ui <- fluidPage(
    
      # App title ----
      titlePanel("Data plot"),
    
      # Sidebar layout with input and output definitions ----
      sidebarLayout(
    
        # Sidebar panel for inputs ----
        sidebarPanel(
    
          # Input: Selector for choosing dataset ----
    
          selectInput(inputId = 'date',
                               label = 'Choose a date:',
                               choices = list.files(path = "./data",
                                                    full.names = FALSE,
                                                    recursive = FALSE))
        ),
    
        # Main panel for displaying outputs ----
        mainPanel(
          plotOutput("plot")
        )
      )
    )
    

    server.R

    # Define server  ----
    server <- function(input, output) {
    
        dataset <- reactive({
          infile <- input$date
          if (is.null(infile)){
            return(NULL)
          }
          read.csv(paste0('./data/',infile))
        })
    
        output$plot <- renderPlot({
          x <- dataset()[,1]
          hist(x, breaks = 40)
        })
    
    }
    

    【讨论】:

    • 存在问题:我读取了所有 csv 文件,然后根据下拉底部的选择在循环中加载“read.csv”。在您的解决方案中,我总是得到相同的数据。
    • 谢谢我解决了。你的解决方案是正确的问题是:stackoverflow.com/questions/40623749/…
    猜你喜欢
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    相关资源
    最近更新 更多