使用render()运行RMD时sliderInput控件消失的问题求助
Shiny交互式R Markdown手动渲染控件异常的原因
问题描述
我有一个名为test的Shiny交互式R Markdown文档,代码如下:
--- title: "test" output: html_document date: "`r Sys.Date()`" runtime: shiny --- ```{r, echo=FALSE} selectInput( 'Runs', label = 'Run:', choices = c("W", "S", "L", "F"), selected = "F", multiple = TRUE ) selectInput( 'Years', label = 'Year:', choices = c(2012, 2013), selected = 2012, multiple = TRUE ) sliderInput(inputId = "Yearslider", label = "Years to plot", #sep = "", min = as.Date("2012-01-01"), max = as.Date("2013-04-10"), #This dataset only has data up to 2013-04-08 step = 30, value = c(as.Date("2012-01-09"), as.Date("2012-01-13")))
在RStudio中点击“Run Document”运行时,所有控件均正常显示;但手动执行render("test.rmd", "html_document")运行时,sliderInput控件消失并变为输入框样式,前两个selectInput控件宽度变得异常狭窄。
原因及解决方法
- 核心原因:手动调用
render()时未指定runtime = "shiny"参数,R默认以静态HTML文档模式渲染,没有加载Shiny交互控件所需的JavaScript脚本和样式表。而RStudio的"Run Document"会自动读取YAML中的runtime: shiny配置,加载对应资源,所以控件显示正常。- sliderInput依赖Shiny的JS逻辑和样式渲染滑块,缺少资源就会退化为原生文本输入框
- selectInput的宽度样式由Shiny的CSS控制,没有加载样式就会显示为原生控件的默认窄宽度
- 解决方法:手动渲染时必须显式指定runtime参数,执行以下命令:
rmarkdown::render("test.rmd", runtime = "shiny")
或者完整指定输出格式:
rmarkdown::render("test.rmd", output_format = rmarkdown::html_document(runtime = "shiny"))
内容的提问来源于stack exchange,提问作者Salvador
相关产品推荐
相关产品推荐

