在R Studio的LaTeX文件中嵌入预定义对象至文本块的问题
解决方案
针对在LaTeX相关的R文档(R Markdown或Sweave)中隐藏代码块并调用R变量生成描述文本的需求,提供两种可行方案:
方案1:R Markdown(.Rmd)
步骤1:隐藏代码块并定义变量
使用echo=FALSE参数隐藏代码块,同时将数据集维度赋值给变量:
```{r crab-dim, echo=FALSE} library(MASS) obs <- nrow(crabs) vars <- ncol(crabs)
### 步骤2:在文本中调用变量 直接用内联R代码插入变量值: > crabs数据集有`r obs`个观测值和`r vars`个变量。 如果一定要用LaTeX的`\newcommand`,可以通过`results='asis'`让R直接生成LaTeX命令定义: ```r ```{r define-cmd, echo=FALSE, results='asis'} library(MASS) obs <- nrow(crabs) vars <- ncol(crabs) # 生成LaTeX命令 cat(sprintf("\\newcommand{\\obsCount}{%d}\n", obs)) cat(sprintf("\\newcommand{\\varCount}{%d}\n", vars))
之后在文本中调用定义好的命令: > crabs数据集有\obsCount{}个观测值和\varCount{}个变量。 ## 方案2:Sweave(.Rnw,纯LaTeX+R混合文档) ### 步骤1:隐藏代码块并定义变量 用`echo=FALSE`参数隐藏代码块: ```latex <<crab-dim, echo=FALSE>>= library(MASS) obs <- nrow(crabs) vars <- ncol(crabs) @
步骤2:在文本中调用变量
使用Sweave的\Sexpr{}命令插入R变量值:
crabs数据集有\Sexpr{obs}个观测值和\Sexpr{vars}个变量。
如果要定义LaTeX命令,同样可以在R代码块中生成:
<<define-cmd, echo=FALSE, results=tex>>= library(MASS) obs <- nrow(crabs) vars <- ncol(crabs) cat(sprintf("\\newcommand{\\obsCount}{%d}\n", obs)) cat(sprintf("\\newcommand{\\varCount}{%d}\n", vars)) @
之后调用命令即可:
crabs数据集有\obsCount{}个观测值和\varCount{}个变量。
内容的提问来源于stack exchange,提问作者data_life
相关产品推荐
相关产品推荐

