suppress console output in r markdown, but keep plot - r

Hi I have the following markdown chunk:
```{r, echo=FALSE,warning=FALSE,message=FALSE,error=FALSE}
lapply(obj,function(x) plot(x,main="some plot") box() axis(1,at=seq(0,25,by=1))
```
The output is multiple plots. However I also get the console message in the pdf document underneath the plots.
<Plot 1> nice plot 1!
<Plot 2> nice plot 2!
-- nasty horrible console output
## [[1]]
01.2882829
## [[2]]
120.29393933
I have tried echo/warning/error/message = FALSE, but neither of these suppress the console output
please help!

try this:
{r, echo=FALSE,results='hide',fig.keep='all'}
lapply(obj,function(x) plot(x,main="some plot") box() axis(1,at=seq(0,25,by=1))

Wrapping any object in invisible will prevent automatically printing it.
You should be able to use
invisible(lapply(obj,function(x) plot(x,main="some plot")))
However the fact that echo=FALSE doesn't work suggests that there might be something else going on.

These are the options that worked for me:
echo=FALSE, message=FALSE, results='hide'

I was having this problem as well in my R notebook and echo=FALSE didn't do anything. However message=FALSE does.
```{r, message=FALSE}

Try this,
It will hide the errors, warning, code, and console output. It will show only the graphs.
{r, echo=FALSE,warning=FALSE,message=FALSE,error=FALSE, results='hide',fig.keep='all'}
lapply(obj,function(x) plot(x,main="some plot") box() axis(1,at=seq(0,25,by=1))
Later you can export it to HTML which will be neat and readable

Simply having ```{r, results = 'hide'} or ```{r, results = FALSE} for your chunk options suppresses R output but not warnings, messages or errors. No extra functions are needed.
More details can be found here.
https://yihui.org/knitr/options/#text-output

Related

Include plots but not console in R markdown

When I knit in R markdown, I not only get the nice plots I want to display but also little console displays like this above each and every plot:
## $`2FL`
## $`2FL`$Timepoint
I have tried include=FALSE, echo=FALSE, warning=FALSE, and message=FALSE to no avail.
When I try results='hide' I don't get the plots I want.
Does anyone know how to show only the plot output and not annoying little console things like this? I would have thought message=FALSE would work but like I said it didn't.
Thanks in advance.

Rmarkdown - insert comment in-between brackets

This may seem like a basic question, but I can't seem to find an answer for this anywhere.
Is there a way to enter a comment between the brackets of the chunk in Rmarkdown.
For example:
```{r some comments}
plot(cars)
```
I tries various types of charecters such as ##, >,<> but they all still creted an error when I Knit the output to html.
The reason I want this is so that when I use RStudio I can collapse the chunks and have a comment there about what's in that chunk.
Thank you
Late to answer, but you can use , inside the brackets to separate parts and add a label (akin to a comment I would say):
``` {r, my-chunk, echo=FALSE, fig.height=4, dev='jpeg'}
```
Reference for more info: https://yihui.org/knitr/options/

How to show code but hide output in RMarkdown?

I want my html file to show the code, but not the output of this chunk:
```{r echo=True, include=FALSE}
fun <- function(b)
{
for(a in b)
{print(a)
return(a * a)}
}
y <- fun(b)
```
When I run the code, i need the print to see the progress (it is quite a long function in reality).
But in the knitr file, I use the output in a further chunk, so I do not want to see it in this one (and there's no notion of progress, since the code has already been run).
This echo=True, include=FALSE here does not work: the whole thing is hidden (which is the normal behavior of include=FALSE).
What are the parameters I could use to hide the prints, but show my code?
As # J_F answered in the comments, using {r echo = T, results = 'hide'}.
I wanted to expand on their answer - there are great resources you can access to determine all possible options for your chunk and output display - I keep a printed copy at my desk!
You can find them either on the RStudio Website under Cheatsheets (look for the R Markdown cheatsheet and R Markdown Reference Guide) or, in RStudio, navigate to the "Help" tab, choose "Cheatsheets", and look for the same documents there.
Finally to set default chunk options, you can run (in your first chunk) something like the following code if you want most chunks to have the same behavior:
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = T,
results = "hide")
```
Later, you can modify the behavior of individual chunks like this, which will replace the default value for just the results option.
```{r analysis, results="markup"}
# code here
```
The results = 'hide' option doesn't prevent other messages to be printed.
To hide them, the following options are useful:
{r, error=FALSE}
{r, warning=FALSE}
{r, message=FALSE}
In every case, the corresponding warning, error or message will be printed to the console instead.
```{r eval=FALSE}
The document will display the code by default but will prevent the code block from being executed, and thus will also not display any results.
For muting library("name_of_library") codes, meanly just showing the codes, {r loadlib, echo=T, results='hide', message=F, warning=F} is great. And imho a better way than library(package, warn.conflicts=F, quietly=T)
For completely silencing the output, here what works for me
```{r error=FALSE, warning=FALSE, message=FALSE}
invisible({capture.output({
# Your code here
2 * 2
# etc etc
})})
```
The 5 measures used above are
error = FALSE
warning = FALSE
message = FALSE
invisible()
capture.output()
To hide warnings, you can also do
{r, warning=FALSE}

R notebook generates a blank plot in addition to actual plot

I am using R notebook. This is my chunk:
```{r}
test = matrix(rnorm(200), 20, 10)
pheatmap::pheatmap(test)
```
I guess it's due to the way pheatmap generates the plot, but it actually generates a blank plot first. Thus, this is the output I see:
How do I get rid of that first image? I see it in the RStudio output (screenshot above) and in the .nb.html file. If I knit to HTML, the blank plot is not there.
I tried different fig.keep options. They work when I knit to HTML, but they don't seem to have an effect in the .nb.html file. How can I get rid of it?
Update: This issue was fixed in pheatmap. It may still be applicable to other scenarios.
This is weird. Try this:
```{r}
library(pheatmap)
p <- pheatmap(test, silent = TRUE)
plot(p$gtable)
```
It produces exactly what you describe. Now, split it into two chunks.
```{r}
library(pheatmap)
p <- pheatmap(test, silent = TRUE)
```
```{r}
plot(p$gtable)
```
It works! I have no idea why, though.

How to add elements to a plot using a knitr chunk without original markdown output?

For documentary purposes, I want some code for a plot in the html-output, but not the plot. Later, I have to call the plotting code, and add something to the plot, but only seeing the additional code. I tried this:
```{r non.finished.plotting, eval=FALSE}
plot(1,type="n")
```
Some explanatory text here in the output:
"This produces an empty plot, and we could now add some points to it manually."
```{r add.layer, fig.width=5, fig.height=5}
<<non.finished.plotting, echo=FALSE>>
points(x=rnorm(100,1,0.1), y=rnorm(100,0.8,0.1) )
```
I have found the echo-notation at Yihui's, but when I knit this, I get an error message in the output.
## Error: plot.new has not been called yet
I also tried fiddling with the chunk options, but I could not find a combination which does what I want.
(Sorry, this is very basic, but I did not find something quite like this example.)
Chunk references in <<>> do not respect chunk options, so <<non.finished.plotting, echo=FALSE>> will not work. What you can do is to move the chunk option echo back to the main chunk like this:
```{r add.layer, fig.width=5, fig.height=5, echo=-1}
<<non.finished.plotting>>
points(x=rnorm(100,1,0.1), y=rnorm(100,0.8,0.1) )
```
echo=-1 means do not echo the first expression (as documented). This is probably what you want:

Resources