Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:如何保存模块返回的值?_R_Shiny_Shiny Reactivity - Fatal编程技术网

R:如何保存模块返回的值?

R:如何保存模块返回的值?,r,shiny,shiny-reactivity,R,Shiny,Shiny Reactivity,我有一个简单的闪亮模块,我想从两个滑块输入中获得总和: 模块代码为: 模块 custSliderGroupInput <- function(id,slider1Name,slider2Name){ ns <- NS(id) tagList(sliderInput(ns("slider1"),slider1Name,1,100,50), sliderInput(ns("slider2"),slider2Name,1,20,10)) } cus

我有一个简单的闪亮模块,我想从两个滑块输入中获得总和:

模块代码为:

模块

custSliderGroupInput <- function(id,slider1Name,slider2Name){
    ns <- NS(id)
    tagList(sliderInput(ns("slider1"),slider1Name,1,100,50),
            sliderInput(ns("slider2"),slider2Name,1,20,10))
}

custSliderGroup <- function(input,output,session){
    rv <- reactiveVal()
    observeEvent(c(input$slider1,input$slider2),{
        rv <- reactive({input$slider1 + input$slider2})
        print(rv())
        return(list(result = rv()))
    })
}
我在Google和StackOverflow上搜索过,但所有的解决方案都不起作用

消息确实会在控制台中打印:

但在UI上没有显示任何内容:

我通过这样做解决了这个问题:

模块

custSliderGroupInput <- function(id,slider1Name,slider2Name){
    ns <- NS(id)
    tagList(sliderInput(ns("slider1"),slider1Name,1,100,50),
            sliderInput(ns("slider2"),slider2Name,1,20,10))
}

custSliderGroup <- function(input,output,session){
    rv <- input$slider1 + input$slider2
    return(rv)
}

custSliderGroupInput我通过这样做解决了这个问题:

模块

custSliderGroupInput <- function(id,slider1Name,slider2Name){
    ns <- NS(id)
    tagList(sliderInput(ns("slider1"),slider1Name,1,100,50),
            sliderInput(ns("slider2"),slider2Name,1,20,10))
}

custSliderGroup <- function(input,output,session){
    rv <- input$slider1 + input$slider2
    return(rv)
}

custSliderGroupInput这可能会有帮助:谢谢。我试图在该解决方案中使用模板修改我现有的编码。但它仍然不起作用。由于值打印到控制台,因此应正确触发callModule。但问题是这些值无法传递给textOutput。这可能会有帮助:谢谢。我试图在该解决方案中使用模板修改我现有的编码。但它仍然不起作用。由于值打印到控制台,因此应正确触发callModule。但问题是这些值无法传递给textOutput。我只是想回答你,但很好,你解决了这个问题。您遇到了麻烦,因为存在用于捕获副作用的ObserveEvent。如果要返回值,请始终使用EventResponsive。非常感谢。我刚试过EventResponse,效果很好。很好,我知道不是那么直观。我还多次遇到绘图渲染问题,因为我使用了错误的绘图:-)我只是想回答你,但很好,你解决了它。您遇到了麻烦,因为存在用于捕获副作用的ObserveEvent。如果要返回值,请始终使用EventResponsive。非常感谢。我刚试过EventResponse,效果很好。很好,我知道不是那么直观。我在多次渲染绘图时也遇到问题,因为我使用了错误的绘图:-)
ui <- fluidPage(
        custSliderGroupInput("myslider","A","B"),
        textOutput("text")
    )


server <- function(input, output,session){
    output$text <- renderText({
        callModule(custSliderGroup,"myslider")
    })
}

shinyApp(ui = ui, server = server)