web-dev-qa-db-fra.com

Commentaire multiligne Contournement?

Je connais (en quelque sorte) déjà la réponse à cette question. Mais j’ai pensé que c’est une question fréquemment posée dans la liste des utilisateurs R, qu’il devrait y avoir une bonne réponse. À ma connaissance, il n'y a pas de fonctionnalité de commentaire multiligne dans R. Alors, est-ce que quelqu'un a de bonnes solutions de contournement?

Bien que R nécessite généralement des sessions interactives (ce qui jette un doute sur la nécessité de faire des commentaires sur plusieurs lignes), j’ai parfois dû envoyer des scripts à des collègues et à des camarades de classe, souvent avec des blocs de code non essentiels. Et pour les personnes venant d’autres langues, c’est une question assez naturelle. 

Dans le passé, j'ai utilisé des citations. Les chaînes prenant en charge les sauts de ligne, exécuter un script R avec

"
Here's my multiline comment.

"
a <- 10
rocknroll.lm <- lm(blah blah blah)
 ...

fonctionne bien. Quelqu'un at-il une meilleure solution?

99
HamiltonUlmer

Cela apparaît assez régulièrement sur la liste de diffusion, voir par exemple ce fil de discussion récent sur r-help . La réponse consensuelle est généralement celle indiquée ci-dessus: étant donné que la langue n’a pas de support direct,

  • travailler avec un éditeur qui a des commandes région à commentaire, et la plupart des éditeurs R avancés 
  • utilisez les constructions if (FALSE) suggérées précédemment, mais notez qu'elle nécessite toujours une analyse complète et doit donc être syntaxiquement correcte
46
Dirk Eddelbuettel

Vous pouvez le faire facilement dans RStudio :

sélectionnez le code et cliquez CTR+SHIFT+C commenter/décommenter le code.

62
Salvador Dali

Une astuce intéressante pour RStudio que je viens de découvrir consiste à utiliser #' car cela crée une section de commentaire à expansion automatique (lorsque vous revenez à la nouvelle ligne à partir d'une telle ligne ou insérez de nouvelles lignes dans une telle section, elle est automatiquement commentée).

27
geotheory

[Mise à jour] Basé sur les commentaires.

# An empty function for Comments
Comment <- function(`@Comments`) {invisible()}

#### Comments ####
Comment( `

  # Put anything in here except back-ticks.

  api_idea <- function() {
    return TRUE
  }

  # Just to show api_idea isn't really there...
  print( api_idea )

`)
####

#### Code. ####
foo <- function() {
  print( "The above did not evaluate!")
}
foo()

[Réponse originale]

Voici un autre moyen ... regardez la photo en bas. Coupez et collez le bloc de code dans RStudio.

Les commentaires multilignes qui rendent l'utilisation d'un IDE plus efficace sont des "bonnes choses", la plupart des IDE ou des éditeurs simples ne permettent pas la surbrillance du texte dans les blocs de commentaire -out simples; bien que certains auteurs aient pris le temps de s’assurer que l’analyse est au sein de chaînes ici. Avec R, nous n’avons pas non plus de commentaires multilignes ni de chaînes ici, mais l’utilisation d’expressions invisibles dans RStudio donne tout ce bien.

Tant que la section que vous souhaitez utiliser pour les commentaires multilignes, les chaînes ici ou les blocs de commentaires non exécutés ne contient pas de backtick, cela peut être intéressant.

#### Intro Notes & Comments ####
invisible( expression( `
{ <= put the brace here to reset the auto indenting...

  Base <- function()
  {      <^~~~~~~~~~~~~~~~ Use the function as a header and nesting marker for the comments
         that show up in the jump-menu.
         --->8---
  }

  External <- function()
  {
    If we used a function similar to:
      api_idea <- function() {

        some_api_example <- function( nested ) {
          stopifnot( some required check here )
        }

        print("Cut and paste this into RStudio to see the code-chunk quick-jump structure.")
        return converted object
      }

    #### Code. ####
    ^~~~~~~~~~~~~~~~~~~~~~~~~~ <= Notice that this comment section isnt in the jump menu!
                                  Putting an apostrophe in isn't causes RStudio to parse as text
                                  and needs to be matched prior to nested structure working again.
    api_idea2 <- function() {

    } # That isn't in the jump-menu, but the one below is...

    api_idea3 <- function() {

    }

  }

    # Just to show api_idea isn't really there...
    print( api_idea )
    }`) )
####

#### Code. ####
foo <- function() {
  print( "The above did not evaluate and cause an error!")
}

foo()

## [1] "The above did not evaluate and cause an error!"

Et voici la photo ...

Structured Comments

20
Thell

Je peux penser à deux options. La première option consiste à utiliser un éditeur permettant de bloquer les commentaires et les commentaires (par exemple, Eclipse). La deuxième option consiste à utiliser une instruction if. Mais cela ne vous permettra que de "commenter" la syntaxe R correcte. Par conséquent, un bon éditeur est la solution de contournement préférée.

if(FALSE){
     #everything in this case is not executed

}
11
Thierry

Si vous trouvez incroyable que toutes les langues ne répondent pas à cela.

C'est probablement la solution la plus propre:

anything="
first comment line
second comment line
"
8
R. Sake

En plus d'utiliser la méthode surchargée pour commenter des codes multilignes simplement en installant RStudio, vous pouvez utiliser Notepad ++ car il prend en charge la coloration syntaxique de R

(Sélectionnez plusieurs lignes) -> Édition -> Commentaire/Décommentation -> Toggle Block Comment

Notez que vous devez d'abord enregistrer le code en tant que source .R (surligné en rouge)

Note that you need to save the code as a .R source first (highlighted in red)

7
im_chc

J'utilise vim pour éditer le script R. 

Disons que le script R est test.R, contenant les mots "Ligne 1", "Ligne 2" et "Ligne 3" sur 3 lignes séparées.

J'ouvre test.R sur la ligne de commande avec Vim en tapant "vim test.R" . Ensuite, je passe à la 1ère ligne que je souhaite commenter, tapez "Control-V", flèche vers le bas jusqu'à la dernière ligne I voulez commenter, tapez un I majuscule, c’est-à-dire "I" pour insertion, tapez "#", puis appuyez sur la touche Échap pour ajouter "#" à chaque ligne sélectionnée en descendant. Enregistrez le fichier dans Vim puis quittez Vim en tapant ": wq". Les modifications doivent apparaître dans Rstudio.

Pour supprimer les commentaires dans Vim, commencez par la première ligne en haut du caractère "#" que vous souhaitez supprimer, encore une fois par "Control-V", et utilisez la flèche jusqu'à la dernière ligne pour laquelle vous souhaitez supprimer un "#". Puis tapez "dd". Les signes "#" doivent être supprimés.

Il y a quelques secondes de décalage entre les modifications à tester.R dans Vim sont reflétées dans Rstudio.

2
Qian Zhang

Dans RStudio un moyen facile de faire cela est d'écrire votre commentaire et une fois que vous avez utilisé CTRL + Maj + C pour commenter votre ligne de code, puis utilisez CTRL + MAJ +/pour afficher votre commentaire sur plusieurs lignes plus facilement de la lecture.

0
Mark Stevenson

En Python, vous faites un commentaire multiligne avec 3x guillemets simples avant et après les commentaires. J'ai essayé cela en R et ça a l'air de marcher aussi. 

Par exemple.

'''
This is a comment
This is a second comment
'''