簡體   English   中英

反應變量無法在 R Shiny 中自動呈現

[英]Reactive variable cannot be rendered automatically in R Shiny

我正在用 R 語言的 Shiny 編寫一個在線表格,但有些令人困惑的事情阻止了我。

我需要的是:

  1. 第一次顯示完整的表格。
  2. 如果您在輸入塊中輸入一個數字並提交,只需自動顯示表格的前 n 行。

我看到的是:

DFflt是表格后面的變量,提交后已經改變了,但是在手動刷新頁面之前無法重新加載網頁上的表格。

我能做些什么來解決這個問題? 謝謝!

library(shiny)
library(tidyverse)

DF <- mpg
DFflt <- mpg

ui <- fluidPage(
  numericInput("nrow", "Slice the top n rows of DF", value = 0),
  actionButton("submit", "Submit"),
  actionButton("p_DFflt", "print DFflt in console"),
  div('render DFflt:'),
  tableOutput("table")
  )
server <- function(input, output, session) {

  observeEvent(input$submit, {
    nrow <- input$nrow
    if (nrow > 10) {
      showNotification(str_c("Invalid", type="error")) }
    else { DFflt <<- DF %>% head(nrow) }
  })
  
  observeEvent(input$p_DFflt, { print(DFflt)} )
  
  output$table <- renderTable({DFflt})
}

shinyApp(ui, server)

正如gdevaux指出的那樣,您不能將 DFlft 定義為全局變量。 嘗試

library(shiny)
library(tidyverse)

DF <- mpg

ui <- fluidPage(
  numericInput("nrow", "Slice the top n rows of DF", value = 0),
  actionButton("submit", "Submit"),
  actionButton("p_DFflt", "print DFflt in console"),
  div('render DFflt:'),
  tableOutput("table")
)
server <- function(input, output, session) {
  
  n_row <- eventReactive(input$submit, {
    input$nrow
  })

  observe({
    if (n_row() > 10) {
    showNotification(str_c("Invalid", type="error")) 
    }
  })

  output$table <- renderTable({
    if (n_row() <= 10) {
      DF %>% head(n_row())
    }
  })
 
 observeEvent(input$p_DFflt, { print(DF)} )
}

shinyApp(ui, server)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM