将选定的值从外部模块传递到 SHINY 中的内部模块
Pass selected values from outer module to inner module in SHINY
我一直在研究下面的问题
但是,我被问题的变体所困:
我试图仅将 某些值 (vals) 从 inputModule 传递到 outputModule。
但是,我的 inputModule 也有一个额外的渲染输出。这似乎阻止了该应用程序的运行。
在我的真实应用程序中,inputModule 需要将数据传递给嵌套的(outputmodule)并产生额外的输出和 UI。
如何将 callModule 或 MyImProxy 限制为仅 vals 而不是在应用服务器调用中将 output$mytext 传递到我的 outputModule?
在 inputModule 中保留 output$mytext
的同时是否可以使用此代码 运行?
非常感谢
library(shiny)
inputModuleUI <- function(id){
ns <- NS(id)
wellPanel(h3("Input Module"),
textInput(ns('text1'), "First text"),
textInput(ns('text2'), "Second text"),
textInput(ns('text3'), "Third text")
),
verbatimTextOutput(ns("mytext"))
}
inputModule <- function(input, output, session){
vals <- reactiveValues()
observe({vals$text1 <- input$text1})
observe({vals$text2 <- input$text2})
return(vals)
#I need this output to stay in the inputModule
output$mytext <- renderPrint({
paste(input$text3)
})
}
outputModuleUI <- function(id){
tagList(
inputModuleUI('IM'),
wellPanel(h3("Output Module"),
verbatimTextOutput(NS(id, "txt")))
)
}
outputModule <- function(input, output, session, ImProxy){
output$txt <- renderPrint({
paste(ImProxy$text1, "&", ImProxy$text2)
})
}
ui <- fluidPage(
outputModuleUI('OM')
)
server <- function(input, output, session){
#here is where I need to only pass vals to MyImProxy...
MyImProxy <- callModule(inputModule, 'IM')
callModule(outputModule, 'OM', MyImProxy)
}
shinyApp(ui, server) ```
你的问题出在inputModuleUI
。如果你组合了几个 ui 元素,用 tagList
:
包裹起来
inputModuleUI <- function(id){
ns <- NS(id)
tagList(
wellPanel(h3("Input Module"),
textInput(ns('text1'), "First text"),
textInput(ns('text2'), "Second text"),
textInput(ns('text3'), "Third text")
),
verbatimTextOutput(ns("mytext"))
)
}
我一直在研究下面的问题
但是,我被问题的变体所困:
我试图仅将 某些值 (vals) 从 inputModule 传递到 outputModule。
但是,我的 inputModule 也有一个额外的渲染输出。这似乎阻止了该应用程序的运行。
在我的真实应用程序中,inputModule 需要将数据传递给嵌套的(outputmodule)并产生额外的输出和 UI。
如何将 callModule 或 MyImProxy 限制为仅 vals 而不是在应用服务器调用中将 output$mytext 传递到我的 outputModule?
在 inputModule 中保留 output$mytext
的同时是否可以使用此代码 运行?
非常感谢
library(shiny)
inputModuleUI <- function(id){
ns <- NS(id)
wellPanel(h3("Input Module"),
textInput(ns('text1'), "First text"),
textInput(ns('text2'), "Second text"),
textInput(ns('text3'), "Third text")
),
verbatimTextOutput(ns("mytext"))
}
inputModule <- function(input, output, session){
vals <- reactiveValues()
observe({vals$text1 <- input$text1})
observe({vals$text2 <- input$text2})
return(vals)
#I need this output to stay in the inputModule
output$mytext <- renderPrint({
paste(input$text3)
})
}
outputModuleUI <- function(id){
tagList(
inputModuleUI('IM'),
wellPanel(h3("Output Module"),
verbatimTextOutput(NS(id, "txt")))
)
}
outputModule <- function(input, output, session, ImProxy){
output$txt <- renderPrint({
paste(ImProxy$text1, "&", ImProxy$text2)
})
}
ui <- fluidPage(
outputModuleUI('OM')
)
server <- function(input, output, session){
#here is where I need to only pass vals to MyImProxy...
MyImProxy <- callModule(inputModule, 'IM')
callModule(outputModule, 'OM', MyImProxy)
}
shinyApp(ui, server) ```
你的问题出在inputModuleUI
。如果你组合了几个 ui 元素,用 tagList
:
inputModuleUI <- function(id){
ns <- NS(id)
tagList(
wellPanel(h3("Input Module"),
textInput(ns('text1'), "First text"),
textInput(ns('text2'), "Second text"),
textInput(ns('text3'), "Third text")
),
verbatimTextOutput(ns("mytext"))
)
}