首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >反应变量不能在R中自动呈现

反应变量不能在R中自动呈现
EN

Stack Overflow用户
提问于 2021-11-24 14:10:53
回答 1查看 65关注 0票数 1

我在用R语言写一张在线表格,但有些东西让我感到困惑。

我需要的是:

如果您在输入块中键入数字并提交,只需显示表automatically.的前n行即可。

我看到的是:

DFflt (表后面的变量)在提交后已经更改,但是在手动刷新页面之前不能重新加载网页上的表。

我能做些什么来解决这个问题?谢谢!

代码语言:javascript
运行
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-24 15:20:47

这应该如您所预期的那样起作用:

代码语言:javascript
运行
复制
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(input$submit == 0){ #  when the submit button is not clicked
      DF
    }else{
      if (n_row() >= 0 & n_row() <= 10) {
        DF %>% head(n_row())
      }
    }
  })
 
 observeEvent(input$p_DFflt, { print(DF)} )
}

shinyApp(ui, server)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70097619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档