我正在与R Shiny合作。 在应用程序中,我有一个散点图。在散点图上选择点时,将出现一个表(表1),其中包含有关所选点的信息。然后,您可以从表1中进行选择以显示第二个表(表2),其中包含有关表1中的选择的信息。我试图将表2中的选定项添加到另一个表(表3)中,但我希望这些项能够当生成新表2s和表1s时,表3中的数据保留在表3中。本质上,我想将多个项目添加到“购物车”中进行下载。
在R Shiny中是否有这样做的方法? 下面是我的服务器代码片段。
server <- shinyServer(function(input, output, session) {
######scatter plot
output$landscape_scatter <- renderPlotly({
p <- plot_ly(data = data, x = ~X, y = ~Y,
color= ~get(input$landscape_color),
type="scatter"
)
p
})
####### table 1
output$selected.data.table <- DT::renderDataTable({
d <- event_data("plotly_selected")
if (is.null(d))
return()
x_min <- round(min(d$x), 5)-0.00001
x_max <- round(max(d$x),5)+0.00001
y_min <- round(min(d$y), 5)-0.00001
y_max <- round(max(d$y), 5)+0.00001
sel.data <- subset(data, X >= x_min &
X <= x_max &
Y >= y_min &
Y <= y_max)
sel.data <- sel.data[,c(37,6,33)]
sel.data$cluster <- as.integer(sel.data$cluster)
table.data <- DT::datatable(sel.data[,c(4,1,2)], class = 'compact', width = "100%", rownames = FALSE, escape=c(-1), selection = c("single")
)
table.data
})
###### table 2
output$data2 <- DT::renderDataTable({
d <- event_data("plotly_selected")
if (is.null(d))
return()
x_min <- round(min(d$x), 5)-0.00001
x_max <- round(max(d$x),5)+0.00001
y_min <- round(min(d$y), 5)-0.00001
y_max <- round(max(d$y), 5)+0.00001
sel.data <- subset(data, X >= x_min &
X <= x_max &
Y >= y_min &
Y <= y_max)
sel.data <- sel.data[,c(37,6,33)]
sel.data$cluster <- as.integer(sel.data$cluster)
data2 <- card[which(card$NUMBER %in% sel.data[input$selected.data.table_rows_selected,2]),c(1,3,11,14)]
table.data <- DT::datatable(data2)
)
table.data
})
})
shinyApp(ui = ui, server = server)
我希望在生成新表1s和表2s时从表2中选择的项目保留在表3中,但是当我在散点图中选择新点以生成新表1s时,表3中的所有行/项目都消失了。