【问题标题】:Deleting data by using checkboxInput with Shiny App and R使用带有 Shiny App 和 R 的 checkboxInput 删除数据
【发布时间】:2016-01-12 13:06:29
【问题描述】:

我对这个话题很陌生。我想将闪亮的应用程序与 R 一起使用来分析我的数据。 这是我的用户界面:R

ui<-(fluidPage(  
titlePanel("My project"), 
sidebarLayout(
sidebarPanel(
textInput("caption", "Caption:", "Data Summary"),

selectInput("dataset", "Choose a dataset:", 
              choices = c("exp1","exp2", "exp3")),


checkboxInput(inputId = "notgr",
                label = strong("Delete superflous data"),
                value = FALSE),

      ),
mainPanel(
  h3(textOutput("caption", container = span)),
       plotOutput("strip"),
               ))))

这里是服务器。R

    library(shiny)
    library(datasets)

server<-(function(input, output,clientData, session) {
 df<-read.table("/some data.txt",header=T)
 df_new<-tag[tag$factor2>0.3,] #should only use data with factor  > 0.3 for plotting

 datasetInput <- reactive({
    switch(input$dataset,
           "exp1" = df,
           "exp1" = df2,
           "exp1" = df3)
       })


  output$strip<-renderPlot({
    stripchart(data=datasetInput(),factor2~tag,vertical=TRUE,method="jitter",pch=19,col="red")
    if (input$notgr) {
       df<-renderTable({df_new})
    } 

      })

 shinyApp(ui=ui,server=server)

我的想法是:如果 (inputId)"notgr" 被激活,则会创建一个新的 data.frame,其中 factor2 的值 >0.3

显然我拥有的版本(带有 if)不起作用。没有错误,但绘制了所有数据。 我用的时候也是这样

if (input$notgr) {
           df<-df[df$factor2>0.3,]
}

 if (input$notgr) {
               datasetInput()<-datasetInput()[datasetInput()$factor2>0.3,]
}

非常感谢您的帮助

【问题讨论】:

    标签: r shiny subset


    【解决方案1】:

    你可以这样做:

    library(shiny)
    library(datasets)
    
    ui <- shinyUI( fluidPage( 
        titlePanel("My project"),
        sidebarLayout(
          sidebarPanel(
            textInput("caption", "Caption:", "Data Summary"),
            selectInput("dataset", "Choose a dataset:", 
                        choices = c("exp1","exp2", "exp3")),
            checkboxInput(inputId = "notgr",
                          label = strong("Delete superflous data"),
                          value = FALSE)
          ),
          mainPanel(
            h3(textOutput("caption", container = span)),
            plotOutput("strip")
          )
        )
      ))
    
    server <- shinyServer(function(input, output,clientData, session) {
      # Mockup data
      df  <- data.frame("tag"=runif(100, min=0,    max=0.4),"factor2"=runif(100, min=0, max=0.40))
      df2 <- data.frame("tag"=runif(100, min=0.2,  max=0.6),"factor2"=runif(100, min=0.2, max=0.6))
      df3 <- data.frame("tag"=runif(100, min=0.25, max=0.8),"factor2"=runif(100, min=0.25, max=0.8))
    
      datasetInput <- reactive({
        switch(input$dataset,
               "exp1" = df,
               "exp2" = df2,
               "exp3" = df3)
      })
    
      # Listen for events, if checkbox is checked or data set switched, run renderData
      observeEvent(input$notgr,{
        renderData()
      })
      observeEvent(input$dataset,{
        renderData()
      })
    
      # Function to draw data for client
      renderData <- function(){
        dat <- datasetInput()
        if (input$notgr) {
          dat <- dat[dat$factor2 > 0.3 ,]
        }
        output$strip<-renderPlot({
          stripchart(data=dat, factor2~tag, vertical=TRUE, method="jitter", pch=19, col="red")
        })
      }
    
    })
    
    shinyApp(ui=ui,server=server)
    

    【讨论】:

    • 太棒了!很高兴我能帮上忙
    猜你喜欢
    • 2013-11-15
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    相关资源
    最近更新 更多