Rmd代码块引用变量设置图形尺寸无效的原因咨询
R Markdown代码块fig尺寸变量不生效的原因与解决方法
核心原因
- knitr对代码块参数(比如
fig.height、fig.width)的解析是在代码执行之前完成的。你在单独代码块里定义的变量属于代码执行阶段的产物,参数解析时这些变量还未生成,因此无法被引用。而直接写数值时,参数解析阶段能直接识别常量值,所以可以正常生效。
解决方法
方法1:用!expr在参数中引用变量
knitr支持通过!expr语法在代码块参数中嵌入R表达式,让参数在代码执行阶段解析变量值:
# 先定义图形尺寸变量 img_height <- 4 img_width <- 6
```{r, fig.height=!expr img_height, fig.width=!expr img_width} plot(mtcars$mpg, mtcars$disp)
### 方法2:用`knitr::opts_chunk$set()`动态设置尺寸 如果需要给多个代码块统一应用尺寸,可以用`opts_chunk$set()`在代码中动态修改全局或局部参数: ```r # 定义变量并设置全局代码块参数 img_height <- 4 img_width <- 6 knitr::opts_chunk$set(fig.height = img_height, fig.width = img_width)
设置完成后,后续的代码块会自动继承这些尺寸参数,无需再单独指定。
内容的提问来源于stack exchange,提问作者yuliaUU
相关产品推荐
相关产品推荐

