106 votes

R : Commenter le bloc de code

Duplicata possible :
R : Solutions de contournement pour les commentaires multilignes ?

Je veux commenter plusieurs lignes de code dans R. Existe-t-il un moyen de le faire sans avoir à mettre un # avant chaque ligne - un peu comme dans le cas suivant /* blocked out code */ en SAS ?

0 votes

R ne prend pas en compte les commentaires sur plusieurs lignes. Voir le fil de discussion similaire : stackoverflow.com/questions/4131338/

0 votes

Ma meilleure suggestion serait d'écrire une macro (ou un plugin si vous utilisez quelque chose comme Sublime Text 2) et d'assigner un raccourci clavier de telle sorte que le texte sélectionné (c'est-à-dire les commentaires) soit précédé d'un # lorsque vous appuyez sur les raccourcis clavier appropriés.

0 votes

C'est une idée. Dommage que R ne le fasse pas nativement. Merci, Maiasaura.

107voto

John Points 11714

La plupart des éditeurs utilisent une sorte de raccourci pour commenter les blocs de code. Les éditeurs par défaut utilisent quelque chose comme commande ou contrôle et guillemet simple pour commenter les lignes de code sélectionnées. Dans RStudio, c'est Command o Control + / . Vérifiez dans votre éditeur.

Il commente toujours ligne par ligne, mais il décommente également les lignes sélectionnées. Pour le RGUI Mac, c'est commande-option ' (j'imagine que pour Windows, c'est contrôle-option). Pour Rstudio, c'est juste Command o Control + Shift + C encore.

Ces raccourcis changeront probablement au fil du temps, à mesure que les éditeurs seront mis à jour et que différents logiciels deviendront les éditeurs R les plus populaires. Vous devrez les rechercher pour le logiciel que vous utilisez.

3 votes

Oui, c'est une fonction très pratique. Dans Emacs, il suffit de mettre en évidence la zone à commenter, et de taper C-x r t suivi des caractères que vous souhaitez ajouter (quelque chose comme "## " ). Pour indenter un bloc de code pour SO, faites la même chose, mais remplacez ces trois derniers caractères par quatre espaces !

2 votes

Dans Emacs, vous pouvez également utiliser M-x comment-region . Je ne savais pas que C-x r Merci !

22 votes

CTRL+SHIFT+C permet de commenter la sélection sous eclipse/StatET.

68voto

Paul Hiemstra Points 28390

Une sorte de commentaire de bloc utilise une instruction if :

if(FALSE) {
  all your code
}

Cela fonctionne, mais j'utilise presque toujours les options de blocage des commentaires de mes éditeurs (RStudio, Kate, Kwrite).

1 votes

J'apprends R maintenant et la vache sacrée.

2 votes

Cela ne risque-t-il pas de poser des problèmes à tous les outils qui vérifient la syntaxe ?

36voto

mdsumner Points 13001

Enveloppez-le dans une fonction inutilisée :

.f = function() {

## unwanted code here:

}

1voto

Sacha Epskamp Points 14956

J'utilise RStudio ou Emacs et j'utilise toujours les raccourcis de l'éditeur disponibles pour commenter les régions. Si cela n'est pas possible, vous pouvez utiliser la réponse de Paul, mais cela ne fonctionne que si votre code est syntaxiquement correct.

Voici un autre moyen cochon que j'ai trouvé, l'envelopper dans scan() et supprimer le résultat. La fonction stocke le commentaire en mémoire pendant un court instant, ce qui signifie qu'elle ne fonctionnera probablement pas avec des commentaires très volumineux. Le mieux est encore de mettre # devant chaque ligne (éventuellement avec des raccourcis d'éditeur).

foo <- scan(what="character")
These are comments
These are still comments
Can also be code:
x <- 1:10
One line must be blank

rm(foo)

3 votes

Une variation encore plus sale. Définissez "#" <- function() invisible(scan(what = character())) puis commencez votre bloc de commentaires par "#"() .

0 votes

La réponse précédente aurait dû comporter des backticks plutôt que des guillemets (bien qu'elle fonctionne dans les deux cas), mais je ne parviendrai jamais à trouver comment insérer des backticks dans un bloc de code à l'intérieur d'un commentaire.

0 votes

Richie, bonne suggestion, mais les barres obliques génèrent des messages d'erreur:Error : unexpected '/' in : " # ( # début du commentaire http:/"

0voto

Tyler Rinker Points 27607

J'ai traité ce sujet sur talkstats.com dans les messages 94, 101 et 103 que vous trouverez dans le fil de discussion : Partagez votre code . Comme d'autres l'ont dit, Rstudio est peut-être une meilleure solution. Je stocke ces fonctions dans mon fichier .Rprofile et je les utilise souvent pour bloquer automatiquement des lignes de code rapidement.

Pas tout à fait aussi bien que vous l'espériez mais cela peut être une approche.

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