我正在尝试创建一个页面,其中可以根据R中选择框的值来呈现图表。目标是呈现不同类型的图表(绘图、图表、直方图等)。根据选择。
我的代码是这样的:
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
)
})
})但是,我在获取输入值时遇到错误:
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.)解决此问题的好模式是什么?
发布于 2014-09-11 01:06:51
一般来说,这个错误意味着你需要做一些反应性的东西,但你没有。如果你使用input中的一个值来计算其他的东西,你需要将它包装在反应性中,如下所示:
NewThing<-reactive({ function(input$OldThing) })然后,您必须在代码中将NewThing引用为NewThing()。没有任何代码,我不能说出您的确切问题是什么,但可能与在computed.visualization中不使用reactive有关。
发布于 2014-09-11 02:00:47
事实证明,对于不同类型的图形没有必要使用不同的渲染函数,renderPlot就可以做到。
output$visualization <- renderPlot({
computed.visualization <- ExecuteVisualization(
input$visualization.select
)
do.call(
computed.visualization$graphing.function.name,
computed.visualization$args
)
})我是在一个错误的假设下工作的,即不同的图形对象需要不同的渲染函数。这样,computed.visualization中返回的任何内容都会呈现为绘图。
https://stackoverflow.com/questions/25770965
复制相似问题