私はユーザーが入力したデータセットを3回動的にサブセット化するアプリケーションをShinyで作成しようとしています。 のは、データセットが光沢のある複数の動的サブセット
Number<- c(10, 20, 30 , 40, 50 ,60, 70, 80, 90,100,110,120,130,140)
Att1 <- c('a','a','a','a','a','a','a','b','b','b','b','b','b','b')
Att2 <- c('c','c','c','d','d','d','d','e','e','e','g','g','g','g')
Index<-c('I1','I2','I3','I4', 'I5','I6','I7','I8','I9','I10', 'I11','I12','I13','I14')
df <- data.frame(Number, Att1 , Att2,Index)
は、私は何をしたいことはATT1からあなたの選択肢AまたはBを与えるドロップダウンメニューを作成することであるということであると仮定しましょう、その後の選択はの選択肢番目のドロップダウンと反応し、 att2が表示されますが、選択肢att1に対してサブセット化されています。選択肢に応じて、ユーザは最後のドロップダウンを選択して、どのインデックスを選択するかを選択できます。インデックスの選択後、データフレームはインデックスによって示された数字だけで返されなければならず、この番号は次のステップで使用されます。
#
# This is a Shiny web application. You can run the application by clicking
# the 'Run App' button above.
#
# Find out more about building applications with Shiny here:
#
# http://shiny.rstudio.com/
#
library(shiny)
library(data.table)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("App"),
sidebarLayout(
sidebarPanel(
selectInput("Att1", "Choose Att1",choices= c(as.character(unique(df$Att1)) )),
uiOutput("c")),
# Show a plot of the generated distribution
mainPanel(DT::dataTableOutput("table")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
Number<- c(10, 20, 30 , 40, 50 ,60, 70, 80, 90,100,110,120,130,140)
Att1 <- c('a','a','a','a','a','a','a','b','b','b','b','b','b','b')
Att2 <- c('c','c','c','d','d','d','d','e','e','e','g','g','g','g')
Index<-c('I1','I2','I3','I4', 'I5','I6','I7','I8','I9','I10', 'I11','I12','I13','I14')
df <- data.frame(Number, Att1 , Att2,Index)
selectedData <- reactive({
Ddata<-subset(df,Att1==input$Att1)
})
output$c<-renderUI({selectInput("Att2", "Choose Att2",choices= c(as.character(unique(selectedData()$Att2))))})
selectedData2 <- reactive({
Vdata<-subset(selectedData(),Att2==input$c)
Vdata<-as.data.frame(Vdata)
Vdata
})
output$table <- DT::renderDataTable({
head(selectedData2(), n = 10)
})
}
# Run the application
shinyApp(ui = ui, server = server)
私は限りだところですが、問題は、私は、反応式で反応性のデータセット二度目を使用する方法であり、また最初の2つの属性の出力がnullです。私は何日もこの問題を解決しようとしています。
回答ありがとうございます。両方とも素晴らしい結果を出しました。私はupdateselectinput関数を認識しておらず、本当に便利です!!!!! – Aleha