【问题标题】:how do I get reactive value of an object and pass it to another function in shiny R如何获取对象的反应值并将其传递给闪亮 R 中的另一个函数
【发布时间】:2016-01-15 18:52:38
【问题描述】:

如何在 plot1 中使用反应值并在 plot2 中使用 X 的对象。换句话说,我想获取 x 的值并将其传递给 plot1 之外的另一个函数。 Server.R中的代码如下:

output$plot1<-renderPlot({
x<-reactiveValue(o="hello")


)}
outpu$plot2<-renderplot({
print(input$x$o)

)}

当我运行它时,它不会在 RStudio 控制台中显示任何内容。

【问题讨论】:

  • 如果您需要共享值x,您应该在renderPlot() 之外定义它。这就是你在说的吗?或者您是否也有一个名为x 的输入?更完整的reproducible example 在这里会有所帮助。

标签: r shiny shiny-server


【解决方案1】:

在服务器中定义renderPlot 之外的反应值。另外,它不是input 的一部分,所以简称为x$o

library(shiny)

shinyApp(
    shinyUI(
        fluidPage(
            wellPanel(
                checkboxInput('p1', 'Trigger plot1'),
                checkboxInput('p2', 'Trigger plot2')
            ),
            plotOutput('plot2'),
            plotOutput('plot1')
        )
    ),
    shinyServer(function(input, output){
        x <- reactiveValues(o = 'havent done anything yet', color=1)

        output$plot1 <- renderPlot({
            ## Add dependency on 'p1'
            if (input$p1)
                x$o <- 'did something'
        })

        output$plot2<-renderPlot({
            input$p2 
            print(x$o)  # it is not in 'input'

            ## Change text color when plot2 is triggered
            x$color <- isolate((x$color + 1)%%length(palette()) + 1)

            plot(1, type="n")
            text(1, label=x$o, col=x$color)
        })
    })
)

【讨论】:

  • 非常感谢,是的,你是对的,我必须在 Server.R 的开头定义 reactiveValue。它有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多