【问题标题】:Dynamic number of Text output (keep the old one, do not overwrite)文本输出的动态数量(保留旧的,不要覆盖)
【发布时间】:2023-03-06 12:03:01
【问题描述】:

我想制作一个反应式显示,根据选择的输入选择器的值显示不同数量的文本输出。因此,当用户按下更新视图按钮时,应该在之前的输出仍然可见的情况下执行新的输出...

{ "outputs" : [ { "var1" :...  , "var2" :.... , "var3" :... , "var4" :.... , "height-weight" :[ 1000 , 500 ]},
{ "var1" :...  , "var2" :.... , "var3" :... , "var4" :.... , "height-weight" :[ 12000 , 34]

,
{ "var1" :...  , "var2" :.... , "var3" :... , "var4" :.... , "height-weight" :[ 12 , 50 ]

ui.R

    library(shiny)
    fluidPage(
    sidebarLayout(
    sidebarPanel(
    numericInput("Caption","How many outputs  you want to 
    make?",2,min=1,max=NaN)      ,

    textInput("var1", "var1:"),
   textInput("var2", "var2:" ),
   # Specification of range within an interval
   sliderInput("height", "height:",
              min = -500, max = 500, value = c(1000)),
   sliderInput("weight", "weight:",
              min = -500, max = 500, value = c(500)),

  textInput("var3", "var3" ),
  textInput("var4", "var4" ),


  submitButton("Update View", icon("refresh"))


  # actionButton("update", "Update")

    ),

    mainPanel(


  tableOutput("values"),
  textOutput("text1")


  )
  )
  )

服务器.R

    function(input, output,session) {


     # Show the values using an HTML table
    output$values <- renderTable({
    # sliderValues()
    output$text1<- renderText({

      paste("{","\"outputs\"",":","[",
        "{","\"var1\"",":",input$var1,",",
        "\"var2\"",":",input$var2,",",
        "\"feature.attribute\"",":",input$var3,",",
        "\"var3\"",":",input$var4,",",
        "\"var4\"",":",input$var5,",",
        "\"height-weight\"",":","[",input$height,",",input$weight,"]",""




       )
      })

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    您希望用户输入各种值,在他们准备好时提交这些值,然后显示提交的值。以下代码并不能解决您的所有问题,但应该可以帮助您入门:

    library(shiny)
    
    ui <- fluidPage(
            mainPanel( 
            textInput("var1", "var1:"),
            textInput("var2", "var2:" ),
            # Specification of range within an interval
            sliderInput("height", "height:",
                    min = -500, max = 500, value = c(1000)),
            sliderInput("weight", "weight:",
                    min = -500, max = 500, value = c(500)),
            textInput("var3", "var3:" ),
            textInput("var4", "var4:" ),
            actionButton("add", "Update View", icon("refresh")),
            tableOutput("values")
            ))
    
    server <- function(input, output,session) {
                  data <- reactiveValues()
                  data$df <- NA
                  observeEvent(input$add,
                                { entry <- isolate( data.frame( var1 = input$var1,
                                                                var2 = input$var2,
                                                                var3 = input$var3,
                                                                var4 = input$var4,
                                                                height = input$height,
                                                                weight = input$weight ))
                                  isolate(data$df <- rbind(data$df, entry)) })
                  output$values <- renderTable({ data$df })
              }
    
    shinyApp(ui=ui,server=server)
    

    注意以下命令

    使用reactiveValues 向现有数据添加新值。 data.frame 存储为reactiveValues 的一个元素。为了仅在用户准备好时添加值,我使用actionButton 而不是submitButton。这让我在按下操作按钮时observeEvent。反应式数据的操作是通过isolate进行的。

    【讨论】:

    • 感谢您的快速回复!这真的很有帮助!我在你的帮助下解决了剩下的问题!
    猜你喜欢
    • 2016-11-23
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 2018-05-27
    相关资源
    最近更新 更多