[英]How can I save previous reactive values in R shiny?
Hi and thank you for your answer,您好,谢谢您的回答,
How can I save previous reactive values in R shiny?如何在 R shiny 中保存以前的无功值? I want to extract the coordiantes of the last two marker locations (leaflet).
我想提取最后两个标记位置(传单)的坐标。 I tried it with the isolate function (without success).
我用 isolate function 试了一下(没有成功)。 In it's current form my code can store the currend reactive variable but it can't store the last one.
在当前形式下,我的代码可以存储当前反应变量,但不能存储最后一个。
Here is my code:这是我的代码:
# Define UI
ui <- fluidPage(
leafletOutput("mymap",height=800)
)
# Define server logic
server <- function(input, output) {
# Leaflet
output$mymap <- renderLeaflet(
leaflet() %>%
addTiles() %>%
setView(lng = 8.53918, lat = 47.36864, zoom = 11) %>%
addDrawToolbar(
targetGroup='draw',
polylineOptions = F,
polygonOptions = F,
rectangleOptions = F,
circleOptions = F,
circleMarkerOptions = F,
editOptions = editToolbarOptions(selectedPathOptions = selectedPathOptions())) %>%
addLayersControl(overlayGroups = c('draw'), options =
layersControlOptions(collapsed=FALSE))
)
reactive({
PosData <- data.frame(PosX = c(NA,NA),
PosY = c(NA,NA),
PosDegree = c(NA,NA))
})
# Extract coordinates
observeEvent(input$mymap_draw_new_feature,{
if(input$mymap_draw_new_feature$geometry$type == "Point"){
PosData$PosX[1] <- input$mymap_draw_new_feature$geometry$coordinates[[1]]
PosData$PosY[1] <- input$mymap_draw_new_feature$geometry$coordinates[[2]]
PosData$PosX[2] <- PosData$PosX[1]
PosData$PosY[2] <- PosData$PosY[1]
print(PosData)
}else{f <- 2}
})
}
# Run the application
shinyApp(ui = ui, server = server)```
In this app, the reactive table PosData
will contain the positions of the last 2 markers:在此应用程序中,反应表
PosData
将包含最后 2 个标记的位置:
library(shiny)
library(leaflet)
library(leaflet.extras)
library(tidyverse)
ui <- fluidPage(
leafletOutput("mymap", height = 800),
tableOutput("PosData")
)
# Define server logic
server <- function(input, output) {
# Leaflet
output$mymap <- renderLeaflet(
leaflet() %>%
addTiles() %>%
setView(lng = 8.53918, lat = 47.36864, zoom = 11) %>%
addDrawToolbar(
targetGroup = "draw",
polylineOptions = F,
polygonOptions = F,
rectangleOptions = F,
circleOptions = F,
circleMarkerOptions = F,
editOptions = editToolbarOptions(selectedPathOptions = selectedPathOptions())
) %>%
addLayersControl(
overlayGroups = c("draw"), options =
layersControlOptions(collapsed = FALSE)
)
)
PosData <- reactiveVal(value = tibble(PosX = numeric(), PosY = numeric()))
output$PosData <- renderTable(PosData())
# Extract coordinates
observeEvent(input$mymap_draw_new_feature, {
req(input$mymap_draw_new_feature$geometry$type == "Point")
PosData() %>%
add_row(
PosX = input$mymap_draw_new_feature$geometry$coordinates[[1]],
PosY = input$mymap_draw_new_feature$geometry$coordinates[[2]]
) %>%
# keep last 2 points
tail(2) %>%
PosData()
})
}
# Run the application
shinyApp(ui = ui, server = server)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.