Saya menggunakan R shinyDashboard untuk membuat aplikasi web. Aplikasi ini dimuat dengan mendarat di beberapa tab 'ikhtisar' sebagai aktif. Ada juga beberapa tabItem lainnya. Asumsikan saya memiliki tabItem khusus yang disebut 'Pengaturan', di mana seseorang dapat mengontrol tampilan dan filter, yang ingin saya terapkan dengan nilai default. Ini menggunakan nilai dinamis, sehingga harus ditempatkan di sisi server.
Masalahnya adalah sampai saya tidak mengunjungi tabItem 'Pengaturan', inputnya tidak diinisialisasi dan oleh karena itu tabItem 'Ikhtisar' tidak memiliki data.
Di bawah ini adalah contoh yang sangat sederhana yang dapat direproduksi, di mana aplikasi harus dimuat dengan nilai '10' di kotak teks (sementara dalam praktiknya, itu hanya diisi setelah mengunjungi 'Pengaturan'):
require(shiny)
require(shinydashboard)
ui<-dashboardPage(skin = "black",
dashboardHeader(
),
dashboardSidebar(
sidebarMenu(
menuItem("Overview", tabName = "overview"),
menuItem("Settings", tabName = "settings") )
),
dashboardBody(
tabItems(
tabItem("overview",
uiOutput("textUI")
),
tabItem("settings",
htmlOutput("FilterUI")
)
)
)
)
server<-shinyServer(function(input, output,session) {
output$FilterUI <- renderUI({
numericInput("selected_filter", "Select value",min=0,max=20,value=10)
})
output$textUI <-renderUI({
box(input$selected_filter)
})
})
shinyApp(ui, server)
1 menjawab
Tentukan reactiveValues
atau hanya reactive()
untuk variabel yang ingin Anda hitung. Tetapkan sebagai default (10). Lihat nilai reaktif tersebut untuk argumen nilai numericInput
, dan untuk output$textUI
. observeEvent
pada numericInput
dan perbarui reactiveValues
yang sesuai.