How to write an if-then statement in LaTeX using the value of an R variable in knitr/Sweave

StackOverflow https://stackoverflow.com/questions/22305444

  •  12-06-2023
  •  | 
  •  

Question

I am currently using knitr along with R 3.0.2 and RStudio in order to produce a LaTeX report. My report is typed up as a .Rnw file, and compiled using the knit2pdf function.

I would like to use an if-then formulation in LaTeX in order to create a separate section, but have the if-then condition use the value of a variable from R (let's call it CreateOptionalSection).

Is this possible? If so, how can I refer to the R variable in the .tex document?

Was it helpful?

Solution

Add \usepackage{comment} to the preamble of your latex file.

At the line before the optional section starts, do

<<startcomment, results='asis', echo=FALSE>>=
if(!CreateOptionalSection){
  cat("\\begin{comment}")
}
@

At the line after the optional section ends, do

<<endcomment, results='asis', echo=FALSE>>=
if(!CreateOptionalSection){
  cat("\\end{comment}")
}
@

OTHER TIPS

You can do it directly in R code in your .Rnw file, using cat to paste the section. Here is an example, when x > 0 it creates section 1, when x < 0 it creates section 2:

\documentclass{article}

\begin{document}
<<condition, include=FALSE, echo=FALSE>>=
x<- rnorm(1)
if(x>0){
  text <- "\\section{Section 1}
  This is new section 1"
  }else{
  text <- "\\section{Section 2}
  This is new section 2"
  }
@
Testing the code: the result of x (which here was \Sexpr{x}) will determine the section.
<<print, results='asis', echo=FALSE>>=
cat(text)
@

\end{document}

This will give you: enter image description here

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top