我正在尝试构建一个闪亮的应用程序,它允许用户单击绘图上的多个位置,然后单击按钮将这些坐标添加到绘图中。问题是我需要将这些坐标作为向量传递给外部 C 程序,因此我需要使这个列表(向量)从闪亮的应用程序内部可用。这是我无能为力的。
我在下面提供了一个玩具示例(效果很好),并且尝试创建这样一个列表,这是一个相当遗憾的尝试。我想要这个玩具示例是生成一个 x,y 坐标列表,然后从该列表中获取 x 和 y 坐标并将它们添加到从 mtcars 获取的向量中,在单击“接受新值”时生成更新的图例如,值”按钮。
有什么建议么?
谢谢,马特
library(shiny)
listo <- numeric()
ui <- basicPage(
plotOutput("plot1", click = "plot_click"),
verbatimTextOutput("info")
)
server <- function(input, output) {
listo2 <-numeric() #create list
obs <- observe({listo2 = append(listo2, input$plot_clickx)}) #adding clicks to list
output$plot1 <- renderPlot({
plot(mtcars$wt, mtcars$mpg)
})
output$info <- renderText({
paste0("x=", input$plot_click$x, "\ny=", input$plot_click$y)
})
}
shinyApp(ui, server)
您正在寻找适合反应式编程的列表:
所以?reactiveValues
是你的朋友:
以下代码使您能够
将点击点保存在“反应列表”中
通过单击操作按钮绘制(尚未修改的)点
代码:
library(shiny)
ui <- basicPage(
plotOutput("plot1", click = "plot_click"),
verbatimTextOutput("info"),
actionButton("updateplot", "Update Plot:")
)
server <- function(input, output) {
val <- reactiveValues(clickx = NULL, clicky = NULL)
observe({
input$plot_click
isolate({
val$clickx = c(val$clickx, input$plot_click$x)
val$clicky = c(val$clicky, input$plot_click$y)
})
}) #adding clicks to list
output$plot1 <- renderPlot({
plot(mtcars$wt, mtcars$mpg)
input$updateplot
isolate({
points(val$clickx, val$clicky)
})
})
output$info <- renderText({
paste0("x = ", val$clickx, ", y = ",val$clicky, "\n")
})
}
shinyApp(ui, server)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)