私はすでにトピックを開く1つの質問があります。さて、私はこれに似たアプリをやろうとしています。Shiny:動的なデータフレームの構築。 renderUI、observe、reactiveValuesそして、最初にテーブルから変数を選択する新しいカテゴリを追加したいと思います。私は、アプリケーション内の他の要素と変数を組み合わせることはできません。誰かが私が間違っていることを私に説明することができましたか? ご覧のとおり、グラフィックスプログラムはうまくいきません。 以下は、あなたがそれを使用していないし、代わりにあなただけのどこにデータフレームを表示している%に%を持つ列をフィルタリングするために同じ条件を使用することができますので、あなたがdata2
を必要としないスクリプトシャイニー:テーブルに変数を選択
#rm(list = ls())
library(shiny)
data <- data.frame(Category1 = rep(letters[1:3],each=15),
Info = paste("Text info",1:45),
Category2 = sample(letters[15:20],45,replace=T),
Size = sample(1:100, 45),
MoreStuff = paste("More Stuff",1:45))
ui <- fluidPage(
titlePanel("Test Explorer"),
sidebarLayout(
sidebarPanel(
selectizeInput("show_vars", "Columns to show:",
choices = colnames(data), multiple = TRUE,
selected = c("Category1","Info","Category2")),
uiOutput("category1"),
uiOutput("category2"),
uiOutput("sizeslider")
),
mainPanel(
tableOutput("table")
)
)
)
server <- function(input, output,session) {
data2 <- reactive({
req(input$table)
if(input$table == "All"){
return(data)
}
data[,names(data) %in% input$show_vars]
})
output$category1 <- renderUI({
selectizeInput('cat1', 'Choose Cat 1', choices = c("All",sort(as.character(unique(data$Category1)))),selected = "All")
})
df_subset <- eventReactive(input$cat1,{
if(input$cat1=="All") {df_subset <- data}
else{df_subset <- data[data$Category1 == input$cat1,]}
})
df_subset1 <- reactive({
if(is.null(input$cat2)){df_subset()} else {df_subset()[df_subset()$Category2 %in% input$cat2,]}
})
output$category2 <- renderUI({
selectizeInput('cat2', 'Choose Cat 2 (optional):', choices = sort(as.character(unique(df_subset()$Category2))), multiple = TRUE,options=NULL)
})
output$sizeslider <- renderUI({
sliderInput("size", label = "Size Range", min=min(df_subset1()$Size), max=max(df_subset1()$Size), value = c(min(df_subset1()$Size),max(df_subset1()$Size)))
})
df_subset2 <- reactive({
if(is.null(input$size)){df_subset1()} else {df_subset1()[df_subset1()$Size >= input$size[1] & df_subset1()$Size <= input$size[2],]}
})
output$table <- renderTable({
df_subset2()
})
}
shinyApp(ui, server)
問題は、選択した項目に関係なく、すべての列が表示されていますか? – amrrs
表示する列を選択できるようにします。したがって、この例にありますが、すべての列が表示されていることがわかります。 – Kim