Replacing the "print" function in knitr chunk evaluation
knitr, r, r-markdown
Solution
You need to selectively overrule the print method for the object class you want to print with pander. Do `methods(pander)` to figure out what is available. Some methods are not exported, so you will have to use `:::` to access them. Here is a simple example.
TEST
====
{r cache = F, comment = NA} print.lm <- pander:::pander.lm lm(mpg ~ wt, data = mtcars)
`
Output
TEST
====
r print.lm <- pander:::pander.lm lm(mpg ~ wt, data = mtcars)
-------------------------------------------------------------- Estimate Std. Error t value Pr(>|t|) ----------------- ---------- ------------ --------- ---------- **(Intercept)** 37.29 1.878 19.86 8.242e-19
**wt** -5.344 0.5591 -9.559 1.294e-10 --------------------------------------------------------------
Table: Fitting linear model: mpg ~ wt
`
Problem
I would like to set the "pander" function as an alternative "print" function for when compiling knitr rmarkdown documents. Like this (Example of code to run in R): ``` require(pander) print <- function(...) pander(..., style = "rmarkdown") # makes sure that everyhing that everyprint will pass through pander summary(cars) ``` This will result in: ``` > summary(cars) ---------------------------------- speed dist ------ ------------ -------------- **** Min. : 4.0 Min. : 2.00 **** 1st Qu.:12.0 1st Qu.: 26.00 **** Median :15.0 Median : 36.00 **** Mean :15.4 Mean : 42.98 **** 3rd Qu.:19.0 3rd Qu.: 56.00 **** Max. :25.0 Max. :120.00 ---------------------------------- ``` This way, I will get all of the tables well formatted, instead of manually needing to write "pander" all across the document (imagine I had to write "summary(car) 20 times in the document, changing "print" will save me writing pander(summary(car)) ). Is that possible? (or is there a smarter way I'm unaware of?) Thanks. Update: example for an .rmd file: ```` TEST ==== ```{r} require(pander) print <- function(...) pander(..., style = "rmarkdown") # makes sure that everyhing that everyprint will pass through pander summary(cars) ``` ```{r, eval=FALSE} library(knitr) knit2html("test.rmd") # http://stackoverflow.com/questions/10646665/how-to-convert-r-markdown-to-html-i-e-what-does-knit-html-do-in-rstudio-0-9 # http://quantifyingmemory.blogspot.co.il/2013/02/reproducible-research-with-r-knitr.html ``` ```` While the output test.md is: ```` TEST ==== ```r require(pander) print <- function(...) pander(..., style = "rmarkdown") # makes sure that everyhing that everyprint will pass through pander summary(cars) ``` ``` ## speed dist ## Min. : 4.0 Min. : 2 ## 1st Qu.:12.0 1st Qu.: 26 ## Median :15.0 Median : 36 ## Mean :15.4 Mean : 43 ## 3rd Qu.:19.0 3rd Qu.: 56 ## Max. :25.0 Max. :120 ``` ```r library(knitr) knit2html("test.rmd") # http://stackoverflow.com/questions/10646665/how-to-convert-r-markdown-to-html-i-e-what-does-knit-html-do-in-rstudio-0-9 # # http://quantifyingmemory.blogspot.co.il/2013/02/reproducible-research-with-r-knitr.html ``` ````