Instead of using cat
to print the solution from within an R code chunk, you could write the solution as you usually would in rmarkdown
(i.e., with the usual combination of text, latex
, and R code chunks), and use the parameter soln
to comment out that section when you don't want to include the solution in the final document.
In the sample rmarkdown
document below, if the parameter soln
is FALSE
, then the line r if(!params$soln) {"\begin{comment}"}
inserts egin{comment}
to comment out the solution (with matching code at the end to insert end{comment}
). I've also indented everything with two tabs, so that the question numbers are formatted with a hanging-indent. (If you like this format, you don't have to type the double-tab for each new paragraph or chunk. If you do this for one line, then each subsequent time you press the Enter
key, the new line will automatically be formatted with the double-tab. Or, just type in all your text and code for a given question, then when you're done, highlight all of it and type tab
twice.)
---
title: "Homework"
output: word_document
header-includes:
- usepackage{comment}
params:
soln: TRUE
---
1. Fit the linear regression model $Y sim X$ with the following data. Interpret the coefficient estimates.
```{r promptchunk, echo = TRUE}
set.seed(123)
X <- c(1, 1, 0, 0)
Y <- rnorm(4)
```
`r if(!params$soln) {"\begin{comment}"}`
**Solution:**
Run the following R code to fit the linear regression model:
```{r, include = params$soln, echo = TRUE, results = "asis"}
fit1 = lm(Y ~ X)
```
To see a summary of the regression results, run the following code and review the output:
```{r, include = params$soln, echo=TRUE}
summary(fit1)
```
The interpretation of the intercept is....
Our estimate $hat{eta}_0$ is `r round(coef(fit1)[1], 2)`.
The estimated X coefficient $hat{eta}_1$ is `r round(coef(fit1)[2], 2)`.
This can be interpreted as....
`r if(!params$soln) {"\end{comment}"}`
Also, instead of knitting the file above interactively, you can render both versions by running the render
function in a separate R script. For example, assuming the file above is called hw.Rmd
, open a separate R script file and run the following:
for (i in c(TRUE, FALSE)) {
rmarkdown::render("hw.Rmd",
params = list(soln = i),
output_file=ifelse(i, "Solutions.doc", "Homework.doc"))
}
Below is what Solutions.doc
looks like. Homework.doc
is similar, except everything from the bold word Solution:
onward is excluded: