Différences entre versions de « Knitr »

 
(15 versions intermédiaires par 4 utilisateurs non affichées)
Ligne 3 : Ligne 3 :
 
[[Image:R_Logo.png|thumb|Knitr est une extension du logiciel [[R]].]]
 
[[Image:R_Logo.png|thumb|Knitr est une extension du logiciel [[R]].]]
  
'''Knitr''' est une extension (''package'' en anglais) du logiciel [[R]] qui permet l'inclusion de code R dans plusieurs types de documents, en particulier dans les documents [[LaTeX]]. Ainsi, les résultats obtenus grâce à R, comme les tableaux et les graphiques, apparaîtront tels quels dans le fichier <tt>.tex</tt> compilé.
+
'''Knitr''' est une extension (''package'' en anglais) du logiciel [[R]] qui permet l'inclusion de code R dans plusieurs types de documents, en particulier dans les documents [[LaTeX]]. Ainsi, les résultats obtenus grâce à R, comme les tableaux et les graphiques, apparaîtront tels quels dans le fichier source compilé (<tt>.pdf</tt> par exemple).
  
 
<!--La librairie '''knitr''' appartient au logiciel [[R]] et sert d'intermédiaire entre un document [[LaTeX]] et du code R. Grâce à cette librairie, il est possible d'écrire des fichiers contenant les deux langages. Un tel fichier générera automatiquement un document avec ses résultats, ses tableaux, ses graphiques, etc.-->
 
<!--La librairie '''knitr''' appartient au logiciel [[R]] et sert d'intermédiaire entre un document [[LaTeX]] et du code R. Grâce à cette librairie, il est possible d'écrire des fichiers contenant les deux langages. Un tel fichier générera automatiquement un document avec ses résultats, ses tableaux, ses graphiques, etc.-->
  
Knitr offre plus de fonctionnalités que la fonction [http://www.stat.uni-muenchen.de/~leisch/Sweave/ Sweave] de R en proposant un environnement de [http://fr.wikipedia.org/wiki/Programmation_lettr%C3%A9e programmation lettrée].
+
Knitr offre plus de fonctionnalités que la fonction Sweave de R et propose un environnement de [http://fr.wikipedia.org/wiki/Programmation_lettr%C3%A9e programmation lettrée].
 +
 
  
 
__TOC__
 
__TOC__
Ligne 23 : Ligne 24 :
 
== Fonctionnement ==
 
== Fonctionnement ==
  
L'idée est d'écrire un document LaTeX ordinaire, mais au lieu d'inclure des tableaux ou des graphiques préalablement générés, on écrit directement le code R qui les génère. De cette façon, les documents sont dynamiques et s'adaptent automatiquement si l'on change les échantillons ou l'analyse.
+
L'idée derrière knitr est d'écrire un document LaTeX ordinaire mais, plutôt que d'inclure des tableaux ou des graphiques générés préalablement, on écrit directement le code R qui les génère. De cette façon, les documents sont dynamiques et s'adaptent automatiquement si l'on change les échantillons ou l'analyse.
  
 
Un des avantages d'utiliser knitr est bien évidemment d'éviter d'avoir à retaper un document LaTeX en cas de changements ou d'erreur. Mais aussi, cela facilite la reproduction des résultats par d'autres utilisateurs. C'est donc un bon outil pour les publications scientifiques.
 
Un des avantages d'utiliser knitr est bien évidemment d'éviter d'avoir à retaper un document LaTeX en cas de changements ou d'erreur. Mais aussi, cela facilite la reproduction des résultats par d'autres utilisateurs. C'est donc un bon outil pour les publications scientifiques.
  
Évidemment, une syntaxe particulière est requise pour la rédaction du document et il faut exécuter le document source au moins deux fois&nbsp;: une fois avec R suivi d'au moins une fois avec LaTeX. Un [https://bitbucket.org/stat/knitr/downloads/knitr-manual.pdf manuel d'utilisation] explique en détail la syntaxe qu'il faut utiliser, mais voici brièvement quelques indications&nbsp;:
+
Une syntaxe particulière est requise pour la rédaction du document et il faut compiler le document source au moins deux fois&nbsp;: une fois avec knitr (dans R) suivi d'au moins une fois avec LaTeX. Un [https://bitbucket.org/stat/knitr/downloads/knitr-manual.pdf manuel d'utilisation] explique en détails la syntaxe à employer, mais voici brièvement quelques indications&nbsp;:
  
 
* Le document est construit en fragments qui sont composés de texte ou bien de code.
 
* Le document est construit en fragments qui sont composés de texte ou bien de code.
* Les fragments de texte commencent par un <code>@</code> suivi d'un saut de ligne. Par défaut, le prermier fragment est toujours un fragment de texte.
+
* Les fragments de texte commencent par un <code>@</code> suivi d'un saut de ligne. Par défaut, le premier fragment est toujours un fragment de texte.
 
* Les fragments de code commencent par <code>&lt;&lt;''paramètres''&gt;&gt;=</code> suivi d'un saut de ligne. Les [http://yihui.name/knitr/options#chunk_options paramètres] déterminent les options d'affichage.
 
* Les fragments de code commencent par <code>&lt;&lt;''paramètres''&gt;&gt;=</code> suivi d'un saut de ligne. Les [http://yihui.name/knitr/options#chunk_options paramètres] déterminent les options d'affichage.
 
* Le fichier source porte généralement l'extension ''.Rnw''.
 
* Le fichier source porte généralement l'extension ''.Rnw''.
  
Une [http://yihui.name/knitr/demos liste d'exemples] est disponible en ligne. Pour compiler un exemple, il faut d'abord avoir installé la librairie sur son compte. Dans une session de R, il faut ensuite importer la libraire puis d'appeler la fonction <code>knit</code> avec le fichier en argument&nbsp;:
+
Une [http://yihui.name/knitr/demos liste d'exemples] est disponible en ligne. Pour compiler un exemple, il faut importer la librairie puis appeler la fonction <code>knit</code> avec le fichier en argument dans un session R&nbsp;:
  
 
<pre>
 
<pre>
Ligne 40 : Ligne 41 :
 
knit("fichier.Rnw")
 
knit("fichier.Rnw")
 
</pre>
 
</pre>
 +
La ligne précédente produira un fichier <tt>.tex</tt> qu'il suffira ensuite de compiler à l'aide de [[LaTeX]] selon la procédure habituelle.
 +
 +
'''Note&nbsp;:''' Le fichier <tt>.tex</tt> sera produit dans le répertoire de travail de R. Ce répertoire est disponible à l'aide de la commande <code>getwd()</code>. Pour que le fichier soit produit dans un autre répertoire, il suffit d'ajouter le paramètre <code>output="''répertoire''"</code> à la fonction <tt>knit</tt>.
 +
 +
== Exemple ==
 +
 +
Pour mettre en évidence la syntaxe détaillée plus haut, voici un court exemple produisant un [http://www.dms.umontreal.ca/downloads/Knitr/Exemple.pdf document] avec du code R et un graphique. Le code et le document qu'il produit est disponible sous la forme d'un [http://www.dms.umontreal.ca/downloads/Knitr/Knitr.zip dossier compressé].
 +
 +
<pre>
 +
\documentclass[11pt]{article}
  
Cette dernière ligne produira un fichier ''.tex'' qu'il suffira de compiler à l'aide de [[LaTeX]] selon la procédure habituelle.
+
\usepackage[utf8]{inputenc}
 +
\usepackage[T1]{fontenc}
 +
\usepackage{lmodern}
 +
\usepackage[french]{babel}
 +
 
 +
\begin{document}
 +
 
 +
En théorie des probabilités, le théorème de Donsker établit la convergence en loi
 +
d'une marche aléatoire vers un mouvement brownien standard. Le code ci-bas génère
 +
une marche aléatoire avec des pas gaussiens standards.
 +
 
 +
\begin{center}
 +
 
 +
<<Mouvement-Brownien, echo=TRUE, fig.width=4, fig.height=4, out.width='.8\\linewidth'>>=
 +
set.seed(123)
 +
x = cumsum(rnorm(100))
 +
plot(x, type = 'l', xlab = 'Temps', ylab = 'Position')
 +
@
 +
 
 +
\end{center}
 +
 
 +
\end{document}
 +
</pre>
 +
 
 +
Les divers [http://yihui.name/knitr/options#chunk_options paramètres] présents dans la balise d'ouverture du fragment de code indiquent respectivement que&nbsp;: ce fragment est nommé ''Mouvement-Brownien'', le code doit être inséré dans le document final (<code>echo</code>), le graphique généré doit mesurer 4 pouces par 4 pouces (<code>fig.width</code> et <code>fig.height</code>) et le graphique doit être inséré dans le document avec une mise à l'échelle à 80 % de la longueur d'une ligne (<code>out.width</code>).
 +
 
 +
Cet exemple démontre également comment il est possible de mélanger le code LaTeX et la syntaxe de knitr. En effet, notons que le fragment de code est situé dans un environnement <code>center</code> qui assure que le graphique sera centré dans le document final. Le même résultat aurait pu être obtenu à l'aide du paramètre <code>fig.align</code> de knitr.
  
 
== Voir aussi ==
 
== Voir aussi ==
 +
 +
=== Présentation ===
 +
 +
* [http://www.dms.umontreal.ca/downloads/Knitr.tar.gz Présentation Knitr]
  
 
=== Articles connexes ===
 
=== Articles connexes ===
 
+
<div class="inline">
 
* [[LaTeX]]
 
* [[LaTeX]]
 
* [[R]]
 
* [[R]]
 +
</div>
  
 
=== Références ===
 
=== Références ===
 
+
<div class="inline">
 
* [http://yihui.name/knitr/ Site officiel]
 
* [http://yihui.name/knitr/ Site officiel]
 
* [http://en.wikipedia.org/wiki/Knitr Knitr sur Wikipédia]
 
* [http://en.wikipedia.org/wiki/Knitr Knitr sur Wikipédia]
 
* [https://github.com/yihui/knitr Knitr sur GitHub]
 
* [https://github.com/yihui/knitr Knitr sur GitHub]
 
* [https://bitbucket.org/stat/knitr/downloads/knitr-manual.pdf Manuel d'instructions]
 
* [https://bitbucket.org/stat/knitr/downloads/knitr-manual.pdf Manuel d'instructions]
 +
</div>

Version actuelle datée du 3 décembre 2020 à 20:55

Knitr est une extension du logiciel R.

Knitr est une extension (package en anglais) du logiciel R qui permet l'inclusion de code R dans plusieurs types de documents, en particulier dans les documents LaTeX. Ainsi, les résultats obtenus grâce à R, comme les tableaux et les graphiques, apparaîtront tels quels dans le fichier source compilé (.pdf par exemple).


Knitr offre plus de fonctionnalités que la fonction Sweave de R et propose un environnement de programmation lettrée.



Fonctionnement

L'idée derrière knitr est d'écrire un document LaTeX ordinaire mais, plutôt que d'inclure des tableaux ou des graphiques générés préalablement, on écrit directement le code R qui les génère. De cette façon, les documents sont dynamiques et s'adaptent automatiquement si l'on change les échantillons ou l'analyse.

Un des avantages d'utiliser knitr est bien évidemment d'éviter d'avoir à retaper un document LaTeX en cas de changements ou d'erreur. Mais aussi, cela facilite la reproduction des résultats par d'autres utilisateurs. C'est donc un bon outil pour les publications scientifiques.

Une syntaxe particulière est requise pour la rédaction du document et il faut compiler le document source au moins deux fois : une fois avec knitr (dans R) suivi d'au moins une fois avec LaTeX. Un manuel d'utilisation explique en détails la syntaxe à employer, mais voici brièvement quelques indications :

  • Le document est construit en fragments qui sont composés de texte ou bien de code.
  • Les fragments de texte commencent par un @ suivi d'un saut de ligne. Par défaut, le premier fragment est toujours un fragment de texte.
  • Les fragments de code commencent par <<paramètres>>= suivi d'un saut de ligne. Les paramètres déterminent les options d'affichage.
  • Le fichier source porte généralement l'extension .Rnw.

Une liste d'exemples est disponible en ligne. Pour compiler un exemple, il faut importer la librairie puis appeler la fonction knit avec le fichier en argument dans un session R :

require(knitr)
knit("fichier.Rnw")

La ligne précédente produira un fichier .tex qu'il suffira ensuite de compiler à l'aide de LaTeX selon la procédure habituelle.

Note : Le fichier .tex sera produit dans le répertoire de travail de R. Ce répertoire est disponible à l'aide de la commande getwd(). Pour que le fichier soit produit dans un autre répertoire, il suffit d'ajouter le paramètre output="répertoire" à la fonction knit.

Exemple

Pour mettre en évidence la syntaxe détaillée plus haut, voici un court exemple produisant un document avec du code R et un graphique. Le code et le document qu'il produit est disponible sous la forme d'un dossier compressé.

\documentclass[11pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[french]{babel}

\begin{document}

En théorie des probabilités, le théorème de Donsker établit la convergence en loi
d'une marche aléatoire vers un mouvement brownien standard. Le code ci-bas génère
une marche aléatoire avec des pas gaussiens standards.

\begin{center}

<<Mouvement-Brownien, echo=TRUE, fig.width=4, fig.height=4, out.width='.8\\linewidth'>>=
set.seed(123)
x = cumsum(rnorm(100))
plot(x, type = 'l', xlab = 'Temps', ylab = 'Position')
@

\end{center}

\end{document}

Les divers paramètres présents dans la balise d'ouverture du fragment de code indiquent respectivement que : ce fragment est nommé Mouvement-Brownien, le code doit être inséré dans le document final (echo), le graphique généré doit mesurer 4 pouces par 4 pouces (fig.width et fig.height) et le graphique doit être inséré dans le document avec une mise à l'échelle à 80 % de la longueur d'une ligne (out.width).

Cet exemple démontre également comment il est possible de mélanger le code LaTeX et la syntaxe de knitr. En effet, notons que le fragment de code est situé dans un environnement center qui assure que le graphique sera centré dans le document final. Le même résultat aurait pu être obtenu à l'aide du paramètre fig.align de knitr.

Voir aussi

Présentation

Articles connexes

Références


La dernière modification de cette page a été faite le 3 décembre 2020 à 20:55.