r-尝试更新reactiveVal时出现未使用的参数错误



我正在尝试创建一个可以放大范围和y轴重新缩放的绘图。类似于根据缩放在交互式绘图上重新缩放y轴,只是我希望它在双击时发生。

library(shiny)
library(tidyverse)
ui <- fluidPage(
sidebarPanel(
actionButton('getdata', 'Get Data')  
),
mainPanel(
plotOutput('plot', brush = brushOpts(id = 'brush'), dblclick = 'dclick')  
)
)
server <- function(input, output, session) {


dat <- eventReactive(input$getdata, {
tibble('BusDate' = Sys.Date() - 0:10, 'Val' = rnorm(11))
})


dat2 <- reactive(dat())
observeEvent(input$dclick, {
brush <- input$brush
maxy <- brush$xmax
miny <- brush$xmin
if (is.null(miny)){
dat2(dat())
}else{
dat2(dat() %>% filter(BusDate > miny & BusDate < maxy))
}
}, ignoreInit = TRUE)
output$plot <- renderPlot({
ggplot(dat2(), aes(x = BusDate, y = Val)) + geom_line()
})

}
shinyApp(ui, server)

我一直收到一个错误,不允许我在观察事件中更新dat2。

Error in dat2: unused argument (dat() %>% filter(BusDate > miny & BusDate < maxy))

如何在observeEvent中更新dat2?我知道更新reactiveValues更容易,但我想知道它是如何与reactiveVal 一起工作的

试试这个:

library(shiny)
library(tidyverse)
ui <- fluidPage(
sidebarPanel(
actionButton('getdata', 'Get Data')  
),
mainPanel(
plotOutput('plot', brush = brushOpts(id = 'brush'), dblclick = 'dclick')  
)
)
server <- function(input, output, session) {


dat <- eventReactive(input$getdata, {
tibble('BusDate' = Sys.Date() - 0:10, 'Val' = rnorm(11))
})


dat2 <- reactiveVal()
observeEvent(input$dclick, {
brush <- input$brush

maxy <- brush$xmax
miny <- brush$xmin

if (is.null(miny)){
dat2(dat())
}else{
dat2(dat() %>% filter(BusDate > miny & BusDate < maxy))
}
}, ignoreInit = TRUE)

output$plot <- renderPlot({
df <- if(is.null(dat2())) dat() else dat2()
ggplot(df, aes(x = BusDate, y = Val)) + geom_line()
})

}
shinyApp(ui, server)

您混淆了reactivereactiveVal。只能在其定义中更新reactive的值。obj(xxx)的更新适用于reactiveVal

最新更新