如何将闪亮模块的返回值存储在reactiveValues中? [英] How to store the returned value from a Shiny module in reactiveValues?

查看:10
本文介绍了如何将闪亮模块的返回值存储在reactiveValues中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

版本1下面是一个玩具模块,它要求用户输入txt,并将输入返回到主要闪亮的应用程序。然后,主闪亮应用程序呈现文本并将其输出到屏幕。

在这里,我将模块的返回值存储在一个名为mytxt的变量中,并通过renderText({ mytxt() })调用它。


但是,我真正想做的是将返回值存储到主闪亮应用程序中的reactiveValues。(我是否输出它并不重要,因为我想对该值做进一步的评估。)但遗憾的是,我找不到办法让它发挥作用。我在下面的版本2中显示失败的代码。


版本1(正确)

附录R

library(shiny)
source("module_1.R")

ui <- fluidPage(

  returnUI("returntxt"),
  textOutput("mytxt")

)

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

  mytxt <- callModule(returnServer, "returntxt")

  output$mytxt <- renderText({ mytxt() })

}

shinyApp(ui, server)

MODULE_1.R

returnUI = function(id) {
  ns <- NS(id)

  tagList(
    textInput(ns("txt"), "Write something")
  )
}


returnServer = function(input, output, session) {
  mytxt <- reactive({
    input$txt
  })

  return(mytxt)
}

版本2(需要帮助!)

附录R

library(shiny)
source("modules/module_1.R")

ui <- fluidPage(

  returnUI("returntxt"),
  textOutput("mytxt")

)

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

  myvals <- reactiveValues(
    txt = NULL
  )

  mytxt <- callModule(returnServer, "returntxt")

  myvals$txt <- isolate(mytxt())

  output$mytxt <- renderText({ myvals$txt })

}

shinyApp(ui, server)

module e.R与版本1相同。

推荐答案

我刚从模块返回reactiveValues找到答案,并使用observe:)呼呼!

附录R

library(shiny)
source("modules/module_1.R")

ui <- fluidPage(

  returnUI("returntxt"),
  textOutput("mytxt")

)

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

  myvals <- reactiveValues(
    txt = NULL
  )

  mytxt <- callModule(returnServer, "returntxt")

  observe({ 
    myvals$txt <- mytxt$txt 
    print(myvals$txt)
  })

  output$mytxt <- renderText({ myvals$txt })

}

shinyApp(ui, server)

MODULE_1.R

returnUI = function(id) {
  ns <- NS(id)

  tagList(
    textInput(ns("txt"), "Write something")
  )
}

returnServer = function(input, output, session) {
  myreturn <- reactiveValues()

  observe({ myreturn$txt <- input$txt })

  return(myreturn)
}

这篇关于如何将闪亮模块的返回值存储在reactiveValues中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆