相关疑难解决方法(0)

收集整个Shiny App中的所有用户输入

有没有办法从textInput()UI中的其他地方显示价值,而不必server.R像下面那样经历一些非常冗长的东西?

ui.R

library(shiny)
shinyUI(
  fluidPage(
  textInput('text_in', label = 'Write text here'),

  # elsewhere in the UI...

  textOutput('text_out')
))
Run Code Online (Sandbox Code Playgroud)

server.R

library(shiny)
shinyServer(function(input, output) {
  output$text_out = renderText(input$text_in)
})
Run Code Online (Sandbox Code Playgroud)

对于这个例子来说并不是太糟糕,但是当我需要多次这样做时它会变得非常冗长.我的愿望是收集用户在整个应用程序中输入的所有输入,并在最后将它们编译成一个漂亮的表格,以便他们可以确认所有内容都是正确的.

我已经看到你在使用JavaScript表达式时可以引用输入元素而无需通过服务器conditionalPanel()但是我不确定如何在这个特定实例之外实现它.

r shiny

6
推荐指数
2
解决办法
3621
查看次数

通过闪亮的按钮动态添加/删除输入字段并保留值

我的问题是以下讨论的后续问题:

如何通过闪亮的按钮动态添加/删除输入字段

我希望能够在闪亮的应用程序上使用操作按钮动态添加/删除输入,而且当我添加新输入时,我希望输入字段的值保持不变,而不是像现在这样更改。你能帮我解决这个问题吗?

例如,如果我更改第一个框并通过按钮添加另一个文本输入,则第一个框的值已重置为默认值。

library(shiny)

ui <- shinyUI(fluidPage(

  sidebarPanel(

      actionButton("add_btn", "Add Textbox"),
      actionButton("rm_btn", "Remove Textbox"),
      textOutput("counter")

    ),

  mainPanel(uiOutput("textbox_ui"))

))

server <- shinyServer(function(input, output, session) {

  # Track the number of input boxes to render
  counter <- reactiveValues(n = 0)

  observeEvent(input$add_btn, {counter$n <- counter$n + 1})
  observeEvent(input$rm_btn, {
    if (counter$n > 0) counter$n <- counter$n - 1
  })

  output$counter <- renderPrint(print(counter$n))

  textboxes <- reactive({

    n <- counter$n

    if (n > 0) {
      lapply(seq_len(n), function(i) {
        textInput(inputId = paste0("textin", i),
                  label = …
Run Code Online (Sandbox Code Playgroud)

shiny shiny-server

5
推荐指数
1
解决办法
1847
查看次数

闪亮动态添加输入字段和数据而无需重新渲染

我正在尝试动态地将新变量添加到正在运行的闪亮应用程序中,但如果我开始编辑一个变量,则每次我添加其他变量时,值(文本和数字)都会重置。这个例子不需要使用 for 循环就可以工作reactiveValuesToList(),但是当我将它应用到我的代码时,它不起作用。这是我的工作示例:

library(shiny)
dist <- c("Normal", "Gamma")
ui <- shinyUI(fluidPage(

  sidebarPanel(

    actionButton("add_btn", "Add Textbox"),
    actionButton("rm_btn", "Remove Textbox"),
    textOutput("counter")

  ),

  mainPanel(uiOutput("textbox_ui"))

))

server <- shinyServer(function(input, output, session) {

  # Track the number of input boxes to render
  counter <- reactiveValues(n = 0)

  # Track all user inputs
  AllInputs <- reactive({
    x <- reactiveValuesToList(input)
  })

  observeEvent(input$add_btn, {counter$n <- counter$n + 1})
  observeEvent(input$rm_btn, {
    if (counter$n > 0) counter$n <- counter$n - 1
  })

  output$counter <- renderPrint(print(counter$n))

  textboxes …
Run Code Online (Sandbox Code Playgroud)

r shiny

2
推荐指数
1
解决办法
1005
查看次数

标签 统计

shiny ×3

r ×2

shiny-server ×1