我希望在我的应用程序中始终显示我的图表(g
)的图。我想将g
的“默认”值硬编码到应用程序中,并且用户可以通过UI更新g
。我正在使用{{igraph}}库及其功能,例如make_empty_graph
和add_vertices
。
我相信目前我的主要问题是我对g
进行了硬编码,但是g
的响应版本实际上是g()
。我确信这个问题以前已经解决了很多次,但是我在Shiny演示版中看不到做到这一点的例子。
这是server()
里面的东西:
g <- make_empty_graph(directed = TRUE) %>%
add_vertices(nv = 1, depth = 0L, x = 0, y = 0, cur = TRUE)
g <- eventReactive(
eventExpr = 'investigate',
valueExpr = {
add_children(g = g, vidx = input$vidx)
}
)
output$the_plot <- renderPlot(
expr = {
plot_graph(g())
}
)
add_children()
和plot_graph()
在全局名称空间中定义。如果有帮助,我很乐意分享更多代码(或整个应用程序)。
根据SO的输入,有效版本为:
g <- reactiveVal(
make_empty_graph(directed = TRUE) %>%
add_vertices(nv = 1, depth = 0L, x = 0, y = 0, cur = TRUE)
)
observeEvent(
eventExpr = input$investigate,
handlerExpr = g(add_children(g = g(), vidx = input$vidx)),
ignoreInit = TRUE
)
output$the_plot <- renderPlot(plot_graph(g()))
答案 0 :(得分:1)
如果我正确理解了您的问题,请使用x => x*2
和x => { return x*2; }
与reactiveValues
结合使用。下面的应用将从observeEvent
中的初始值5开始,但稍后将取决于ignoreInit = TRUE
。这样,您总是在输出中引用一个无功值。
output$test