[英]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.