93 votes

Comment afficher du code mais masquer la sortie dans RMarkdown ?

Je veux que mon fichier html affiche le code, mais pas la sortie de ce chunk:

```{r echo=True, include=FALSE}
fun <- function(b)
    {
    for(a in b)
        {print(a)
        return(a * a)}
    }
y <- fun(b)
```

Quand j'exécute le code, j'ai besoin de voir l'impression pour suivre le progrès (c'est une fonction assez longue en réalité).

Mais dans le fichier knitr, j'utilise la sortie dans un autre chunk, donc je ne veux pas la voir dans celui-ci (et il n'y a pas de notion de progrès, puisque le code a déjà été exécuté).

Ce echo=True, include=FALSE ici ne fonctionne pas: le tout est caché (ce qui est le comportement normal de include=FALSE).

Quels sont les paramètres que je pourrais utiliser pour masquer les impressions, mais montrer mon code?

69 votes

Essayer {r echo=T, results='hide'}

1 votes

Belle, c'est exactement ce que je cherchais! Je n'avais pas vu ce paramètre résultats auparavant

1 votes

Mais comment cacher tout type de sortie ? En utilisant results='hide' affichera toujours des éléments tels que des avertissements, comme lorsqu'un objet est masqué lors de l'utilisation de library(package). Existe-t-il une option pour masquer tout ce qui serait imprimé dans la console ?

89voto

Nova Points 1100

Comme l'a mentionné @ J_F dans les commentaires, en utilisant {r echo = T, results = 'hide'}.

Je voulais approfondir leur réponse - il existe de nombreuses ressources auxquelles vous pouvez accéder pour déterminer toutes les options possibles pour votre chunk et l'affichage de la sortie - j'en garde une version imprimée sur mon bureau!

Vous pouvez les trouver soit sur le site Web de RStudio sous Cheat Sheets (rechercher la triche R Markdown et le guide de référence R Markdown) ou, dans RStudio, accéder à l'onglet "Aide", choisir "Cheat Sheets", et rechercher les mêmes documents là-bas.

Enfin, pour définir les options par défaut du chunk, vous pouvez exécuter (dans votre premier chunk) quelque chose comme le code suivant si vous souhaitez que la plupart des chunks aient le même comportement:

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = T,
                      results = "hide")
```

Plus tard, vous pouvez modifier le comportement des chunks individuels comme ceci, ce qui remplacera la valeur par défaut pour l'option de résultats uniquement.

```{r analysis, results="markup"}
# code ici
```

0 votes

Vraiment sympa. Je trouve cela très utile lorsque je rédige du pseudo-code ou que je crée simplement un cahier avec du code fonctionnel (que je peux tester), mais en excluant la sortie pour que je puisse le garder court et propre ! Merci.

43voto

jmon12 Points 553

La results = 'hide' option ne permet pas d'empêcher l'affichage d'autres messages. Pour les cacher, les options suivantes sont utiles :

  • {r, error=FALSE}
  • {r, warning=FALSE}
  • {r, message=FALSE}

Dans tous les cas, le message d'erreur, d'avertissement ou de message correspondant sera affiché dans la console à la place.

25voto

DryLabRebel Points 848
```{r eval=FALSE}

Le document affichera le code par défaut mais empêchera l'exécution du bloc de code, et donc n'affichera pas non plus de résultats.

2 votes

Pour moi, je voulais afficher le code et non le graphique, j'ai donc utilisé echo=TRUE, eval=FALSE

0 votes

C'est bien mieux. Pour moi, résultat="masquer" ne montrait que la dernière ligne du code, eval=F affichait le code en entier.

0 votes

eval=F est bon seulement si vous n'avez pas besoin d'utiliser le résultat de ce morceau dans les suivants.

5voto

ali kasapoglu Points 1

Pour masquer les codes library("nom_de_la_bibliotheque"), simplement montrer les codes, {r loadlib, echo=T, results='hide', message=F, warning=F} est excellent. Et à mon avis, c'est une meilleure façon que library(package, warn.conflicts=F, quietly=T)

0 votes

library(package, warn.conflicts=F, quietly=T) supprime les messages dans la console mais pas dans la sortie HTML lorsque Knitr tricote en HTML.

3voto

Pour masquer les avertissements, vous pouvez également faire {r, warning=FALSE}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X