在Quarto Shiny文档中实现代码块间的数据共享
在Quarto Shiny文档中共享data-chunk对象到server-chunk的解决方案
问题核心是Quarto Shiny中不同代码块的运行环境隔离:默认无context的代码块运行在文档渲染环境,而带context: server的代码块运行在Shiny服务器端环境,两个环境不共享对象,因此server-chunk找不到faithful2。
解决方法
给定义数据的代码块添加context: setup或context: server标识,让数据对象创建在Shiny服务器环境中,server-chunk即可访问。
修改后的代码示例
--- title: "Untitled" format: html server: shiny ---
#| context: setup faithful2 <- faithful
sliderInput("bins", "Number of bins:", min = 1, max = 50, value = 30) plotOutput("distPlot")
#| context: server output$distPlot <- renderPlot({ x <- faithful2[, 2] # Old Faithful Geyser data bins <- seq(min(x), max(x), length.out = input$bins + 1) hist(x, breaks = bins, col = 'darkgray', border = 'white', xlab = 'Waiting time to next eruption (in mins)', main = 'Histogram of waiting times') })
补充说明
context: setup:在Shiny服务器启动前执行,适合初始化数据、加载依赖等前置操作context: server:直接在Shiny服务器环境中执行,和server-chunk共享同一环境,也能实现对象共享
内容的提问来源于stack exchange,提问作者boshek
相关产品推荐
相关产品推荐

