簡體   English   中英

通過將CheckboxInput與Shiny App和R一起使用來刪除數據

[英]Deleting data by using checkboxInput with Shiny App and R

我對這個話題很陌生。 我想將閃亮的應用程序與R一起使用以分析我的數據。 這是我的ui: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"),
               ))))

這是服務器

    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,]
}

非常感謝你的幫助

您可以執行以下操作:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM