首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据输入在Shiny for R中动态选择绘图函数?

如何根据输入在Shiny for R中动态选择绘图函数?
EN

Stack Overflow用户
提问于 2014-09-11 00:51:47
回答 2查看 761关注 0票数 1

我正在尝试创建一个页面,其中可以根据R中选择框的值来呈现图表。目标是呈现不同类型的图表(绘图、图表、直方图等)。根据选择。

我的代码是这样的:

代码语言:javascript
复制
shinyServer(function(input, output) {

    computed.visualization <- ExecuteVisualization(
      input$visualization.select
    )

    rendering.function <- SelectRenderingFunction(
      computed.visualization$graphing.function.name
    )

    output$visualization <- rendering.function({
        do.call(
          computed.visualization$graphing.function.name,
          computed.visualization$args
        )
    })
})

但是,我在获取输入值时遇到错误:

代码语言:javascript
复制
Operation not allowed without an active reactive context. 
(You tried to do something that can only be done from 
inside a reactive expression or observer.)

解决此问题的好模式是什么?

EN

回答 2

Stack Overflow用户

发布于 2014-09-11 01:06:51

一般来说,这个错误意味着你需要做一些反应性的东西,但你没有。如果你使用input中的一个值来计算其他的东西,你需要将它包装在反应性中,如下所示:

代码语言:javascript
复制
NewThing<-reactive({ function(input$OldThing) })

然后,您必须在代码中将NewThing引用为NewThing()。没有任何代码,我不能说出您的确切问题是什么,但可能与在computed.visualization中不使用reactive有关。

票数 1
EN

Stack Overflow用户

发布于 2014-09-11 02:00:47

事实证明,对于不同类型的图形没有必要使用不同的渲染函数,renderPlot就可以做到。

代码语言:javascript
复制
output$visualization <- renderPlot({
  computed.visualization <- ExecuteVisualization(
    input$visualization.select
  )

  do.call(
    computed.visualization$graphing.function.name,
    computed.visualization$args
  )
})

我是在一个错误的假设下工作的,即不同的图形对象需要不同的渲染函数。这样,computed.visualization中返回的任何内容都会呈现为绘图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25770965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档