knitr

A general-purpose tool for dynamic report generation in R

Github星跟蹤圖

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')

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 = 'https://cran.r-project.org')
install.packages('knitr', repos = c('https://xran.yihui.org', 'https://cran.r-project.org'))

Note that if you want to build the source package via R CMD INSTALL without a previously installed version of knitr, you must either pre-install knitr from CRAN, or run R CMD INSTALL on this source repo, otherwise R CMD build will fail (which is probably a bug of base R).

Motivation

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

  • I stared at the source code of Sweave and wished for hundreds of times,
    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, 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 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.

主要指標

概覽
名稱與所有者yihui/knitr
主編程語言R
編程語言Makefile (語言數: 6)
平台
許可證
所有者活动
創建於2011-10-17 20:09:04
推送於2025-05-24 01:58:36
最后一次提交2025-05-23 18:58:36
發布數65
最新版本名稱v1.50 (發布於 )
第一版名稱v0.1 (發布於 )
用户参与
星數2.4k
關注者數114
派生數880
提交數6.5k
已啟用問題?
問題數1838
打開的問題數132
拉請求數440
打開的拉請求數21
關閉的拉請求數107
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?