Git Product home page Git Product logo

knitr's Introduction

knitr

Build Status Coverage Status Downloads from the RStudio CRAN mirror

The R package knitr is a general-purpose literate programming engine, with lightweight API's designed to give users full control of the output without heavy coding work. It combines many features into one package with slight tweaks motivated from my everyday use of Sweave. See the package homepage for details and examples. See FAQ's for a list of frequently asked questions (including where to ask questions).

Installation

You can install the stable version on CRAN:

install.packages('knitr', dependencies = TRUE)

You can also install the development version from XRAN, which provides daily build of knitr:

# update all existing packages first
update.packages(ask = FALSE, repos = 'http://cran.rstudio.org')
install.packages('knitr', repos = c('http://yihui.name/xran', 'http://cran.rstudio.org'))

Or use devtools to install the development version from Github:

devtools::install_github('yihui/knitr', build_vignettes = TRUE)

Motivation

While Sweave and related add-on packages like cacheSweave and pgfSweave are fairly good engines for literate programming in R, but I often feel my hands are tied, for example:

  • I stared at the source code of Sweave and wished for hundreds of times that if only I could easily insert [width=.8\textwidth] between \includegraphics and {my-plot.pdf} (the official way in Sweave is \setkeys{Gin} but it is setting a global width, which is unrealistic since we often have to set widths individually; yes, you can use \setkeys{Gin} for many times, but why not just provide an option for each chunk?)
  • I wished for many times that if only I could use graphics devices other than PDF and postscript; now the dream has come true in the official R, but what I was hoping for was an option as simple as dev = 'png' or dev = 'CairoJPEG'
  • I wished multiple plots in a code chunk could be recorded instead of only the last one
  • I wished there was a way to round the numbers in \Sexpr{} other than writing expressions like \Sexpr{round(x, 3)} for each single \Sexpr{}
  • I wished I did not have to print() plots from ggplot2 and a simple qplot(x, y) would just give me a plot in Sweave
  • I wished users would never need instructions on Sweave.sty or run into troubles due to the fact that LaTeX cannot find Sweave.sty
  • I wished cacheSweave could print the results of a code chunk even if it was cached
  • I wished brew could support graphics
  • I wished R2HTML could support R code syntax highlighting
  • ...

The book Dynamic Documents with R and knitr

The package knitr was designed to give the user access to every part of the process of dealing with a literate programming document, so there is no need to hack at any core components if you want more freedom. I have gone through the source code of pgfSweave and cacheSweave for a couple of times, and I often feel uncomfortable with the large amount of code copied from official R, especially when R has a new version released (I will begin to worry if the add-on packages are still up-to-date with the official Sweave).

Usage

library(knitr)
?knit
knit(input)

If options are not explicitly specified, knitr will try to guess reasonable default settings. A few manuals are available such as the main manual, and the graphics manual. For a more organized reference, see the knitr book.

License

This package is free and open source software, licensed under GPL.

knitr's People

Contributors

yihui avatar ramnathv avatar jjallaire avatar robertzk avatar cmmp avatar jrnold avatar taiyun avatar richierocks avatar aronatkins avatar jimhester avatar michelk avatar juba avatar jonkeane avatar csgillespie avatar noamross avatar lrcg avatar hemken avatar fhirschmann avatar tlamadon avatar zachary-foster avatar mingsnu avatar knokknok avatar jlburkhead avatar duncandoo avatar wush978 avatar nicksalkowski avatar mnel avatar krlmlr avatar javierluraschi avatar kohske avatar

Watchers

James Cloos avatar yalei avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.