我正在努力完成這項作業。我想在一個閃亮的應用程式的側邊欄中顯示一個按鈕(名為 "下載聚合資料"),當且僅當兩個條件得到滿足時,即
(1) 我從 "顯示額外按鈕 "下的選單中選擇 "是 "值,并且(2) 選定并顯示在表中的資料至少有20行。條件(2)。
條件(2)是在 "選擇資料塊 "選單中選擇 "large_chunk "的結果,但我希望該條件是基于輸出而非輸入的。在我正在開發的實際應用中,我將不會事先知道我將用我的過濾器選擇多少資料行。
現在只實作了條件(1)。
我在這里發現了一些關于條件面板和服務器端的條件的有用資訊
Shiny - conditionalPanel - set condition as output from server但是我并沒有走得很遠。 希望得到任何幫助!
library(shiny)
library(shinyWidgets)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> 以下物件被屏蔽在'package:stats'中:
#>
#> filter, lag
#> 以下物件被屏蔽在'package:base'之外:
#>
#> intersect, setdiff, setequal, union
library(DT)
#>
#> Attaching package: 'DT'
#> 以下物件被屏蔽在'package:shiny'中:
#>
#> dataTableOutput, renderDataTable
df <- tibble(x=1。 30, y=51。 80。 z=c(rep("small_chunk"/span>。 7)。 rep("large_chunk"。 23)))
ui <- fluidPage()
sidebarLayout()
sidebarPanel()
pickerInput("my_selection","選擇資料塊",
choices=c("large_chunk"。 "small_chunk"),
selected="small_chunk",
options = list(`actions-box` = TRUE。 `selected-text-format` = "count > 3")。 multiple = F),
pickerInput("show","Show Extra Button",
choices=c("yes"。 "no"),
selected="yes",
options = list(`actions-box` = TRUE。 `selected-text-format` = "count > 3")。 multiple = F),
conditionalPanel()
條件= "input.show == 'yes'" ,
downloadButton("downloadData"/span>。 "下載聚合資料" ))
),
mainPanel()
DTOutput("table")
)
)
)
服務器 < - function(input,output) {>
data_reactive <- reactive({)
df %>% filter(z %in% input$my_selection )
})
output$table < - renderDT({datable(data_reactive())})
}
shinyApp(ui = ui, server = server)
#> 沒有找到PhantomJS。你可以用webshot::install_phantomjs()來安裝它。如果已經安裝,請確保通過PATH變數找到Phantomjs可執行檔案。
靜態R Markdown檔案中不支持Shiny應用程式
創建于2021-09-22,由reprex包(v2.0.1)
uj5u.com熱心網友回復:
你可以做到
output[["largeChunk"]] < -反應式({)
nrow(data_reactive() > = 20
})
outputOptions(output, "largeChunk"。 suspendWhenHidden = FALSE)
而在用戶界面中:
conditionalPanel()
條件= "input.show == 'yes' && output.largeChunk",
......
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/334045.html
標籤:
