小编Sea*_*kin的帖子

R Shiny:如何在添加/删除按钮上下文中使多个元素具有反应性?

我正在创建一个闪亮的应用程序,这样当我单击“添加”或“删除”按钮时,多个反应性元素都会受到影响。我已经大大简化了我要在下面做的事情。基本上,我们并排获得了selectInput()和textInput()框,以便在textInput()框中填充用户选择的selectInput()框结果。然后,我有一个添加按钮和一个删除按钮,这样,通过单击添加按钮,在下一行的下方,我们可以并排获得新的selectInput()和textInput()框。如上所述,新行的textInput()框显示了新行的selectInput()框的用户选择结果。

我遇到的问题是能够引用新的seletInput()框的新值。使用get()引用不起作用,我需要一种迭代的方式来在添加和删除新框时引用这些值。如何成功调用对连续的selectInput()框的结果的引用?

suppressWarnings(library(shiny))
suppressWarnings(library(shinyFiles))


ui <- function(request) {
    fluidPage(
        fluidRow(
            column(2,
                uiOutput("ui1")
            ),
            column(2,
                uiOutput("ui2")
            ),
            column(1,
                actionButton(inputId = 'insertParamBtn', label = "Add Param")
            ),
            column(1,
                actionButton(inputId = 'removeParamBtn', label = "Remove Param")
            )
            ),
        tags$div(id = 'placeholder'),
        hr(),
        fluidRow(column(12, verbatimTextOutput("view", placeholder = T)))
            )
}

server <- function(input, output, session) {
    params <- reactiveValues(btn = 0)
    output$ui1 <- renderUI({
        selectInput("UI1", "First UI",
            choices = thisList, selected = 1)
    })
    output$ui2 <- renderUI({
        textInput("UI2", "Second UI", value = input$UI1, width …
Run Code Online (Sandbox Code Playgroud)

r shiny shiny-server

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

R Shiny:如何将反应性值从闪亮的模块返回到主服务器功能?

我有一个简单的玩具示例,该示例使用add / removeBtn模块从“第一个”模块添加和删除UI。我需要跟踪单击添加/删除的次数。如果我不使用模块,这很容易,但是我正在尝试在嵌套模块的上下文中这样做。代码在下面,但是基本上,我似乎无法从主服务器函数中的addRmBtnServer()访问返回的内容。我确信这是一个简单的修复程序,但是我已经尝试了许多解决方法,但是似乎无法从对addRmBtnServer()的调用中访问结果。谢谢!

library(shiny)

firstUI <- function(id) { uiOutput(NS(id, "first")) }

firstServer <- function(input, output, session, a) {

    output$first <- renderUI({
        selectInput(session$ns("select"), h4("Select"), paste0(isolate(a()),letters[1:4]))
    })
}

removeFirstUI <- function(id) {
    removeUI(selector = paste0('#', NS(id, "first")))
}

addRmBtnUI <- function(id) {
    ns <- NS(id)

    tags$div(
    actionButton(inputId = ns('insertParamBtn'), label = "Add"),
    actionButton(ns('removeParamBtn'), label = "Remove"),
    hr(),
    tags$div(id = ns('placeholder'))
  )
}

addRmBtnServer <- function(input, output, session, moduleToReplicate, ...) {
    ns = session$ns

    params <- reactiveValues(btn = 0)

    observeEvent(input$insertParamBtn, {
        params$btn <- …
Run Code Online (Sandbox Code Playgroud)

r shiny

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

R Shiny:如何在嵌套模块之间传递反应变量

我创建了一个玩具示例,其中弹出一个textInput()框供用户输入任何字符串,然后通过单击添加按钮,弹出一个selectInput()框,并在字符串前加上字母a:d。换句话说,如果用户输入“ 1”,则通过单击“添加”按钮,将弹出一个selectInput()框,其中包含1a,1b,1c和1d作为选择。我正在使用一个用于添加/删除按钮功能的模块,该模块调用另一个模块来生成selectInput()框。主服务器函数调用添加/删除模块,该模块调用“第一个”模块,该模块生成selectInput()框。我将a()作为反应元素传递给添加/删除模块,该模块又将其传递给“第一个”模块。我只是在添加/删除模块和“ first”的功能签名中使用了“ ...”

这似乎可行,尽管a()在到达“第一个”模块时似乎并没有反应,这意味着如果我在“ a”框中键入其他字符串,我希望在selectInput()中进行选择)框进行动态更改,或者至少当我更改textInput()字符串并单击“添加”时,新的selectInput()应该反映更新后的textInput()字符串,但这不会发生。是什么会使selectInput()选项随着textInput()的变化而动态变化?下面的代码,谢谢!

library(shiny)

firstUI <- function(id) { uiOutput(NS(id, "first")) }

firstServer <- function(input, output, session, a) {

    output$first <- renderUI({
        selectInput(session$ns("select"), h4("Select"), paste0(a,letters[1:4]))
    })
}

removeFirstUI <- function(id) {
    removeUI(selector = paste0('#', NS(id, "first")))
}

addRmBtnUI <- function(id) {
    ns <- NS(id)

    tags$div(
    actionButton(inputId = ns('insertParamBtn'), label = "Add"),
    actionButton(ns('removeParamBtn'), label = "Remove"),
    hr(),
    tags$div(id = ns('placeholder'))
  )
}

addRmBtnServer <- function(input, output, session, moduleToReplicate,...) {
    ns = session$ns

    params <- reactiveValues(btn = 0)

    observeEvent(input$insertParamBtn, { …
Run Code Online (Sandbox Code Playgroud)

r shiny

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

标签 统计

r ×3

shiny ×3

shiny-server ×1