it-swarm.com.de

Problemumgehungen für mehrzeilige Kommentare?

Ich weiß (irgendwie) bereits die Antwort auf diese Frage. Aber ich dachte, es ist eine, die so oft in der Liste der R-Benutzer gefragt wird, dass es eine solide gute Antwort geben sollte. Meines Wissens gibt es in R. keine mehrzeiligen Kommentarfunktionen. Hat jemand eine gute Lösung?

Während einiges an Arbeit in R normalerweise interaktive Sitzungen beinhaltet (was die Notwendigkeit von mehrzeiligen Kommentaren in Frage stellt), gab es Zeiten, in denen ich Skripts an Kollegen und Klassenkameraden senden musste, von denen viele nicht-triviale Codeblöcke beinhalten. Und für Leute, die aus anderen Sprachen kommen, ist das eine ziemlich natürliche Frage. 

In der Vergangenheit habe ich Zitate verwendet. Da Zeichenfolgen Zeilenumbrüche unterstützen, wird ein R-Skript mit ausgeführt

"
Here's my multiline comment.

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

funktioniert gut. Hat jemand eine bessere Lösung?

99
HamiltonUlmer

Dies erscheint ziemlich regelmäßig auf der Mailingliste, siehe zum Beispiel diesen letzten Thread zu r-help . Die Konsensantwort ist normalerweise die oben gezeigte: Da die Sprache keine direkte Unterstützung hat, müssen Sie dies auch tun

  • sie können mit einem Editor arbeiten, der Region-zu-Kommentar-Befehle enthält, und die meisten fortgeschrittenen R-Editoren 
  • verwenden Sie die if (FALSE)-Konstrukte, die zuvor vorgeschlagen wurden. Beachten Sie jedoch, dass sie immer noch vollständig analysiert werden müssen und daher syntaktisch korrekt sein müssen
46

Sie können dies einfach in RStudio tun:

wählen Sie den Code aus und klicken Sie auf CTR+SHIFT+C Code kommentieren/auskommentieren.

62
Salvador Dali

Ein guter Trick für RStudio, den ich gerade entdeckt habe, ist die Verwendung von #', da dies einen sich selbst erweiternden Kommentarabschnitt erzeugt (wenn Sie aus einer solchen Zeile zu einer neuen Zeile zurückkehren oder neue Zeilen in einen solchen Abschnitt einfügen, wird dies automatisch kommentiert).

27
geotheory

[Update] Basierend auf Kommentaren.

# 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()

[Ursprüngliche Antwort]

Hier ist ein anderer Weg ... schaut euch das Bild unten an. Schneiden Sie den Codeblock aus und fügen Sie ihn in RStudio ein.

Mehrzeilige Kommentare, die die Verwendung eines IDE more effektiv machen, sind ein "gutes Ding"; die meisten IDEs oder einfachen Editoren haben keine Hervorhebung von Text in einfachen auskommentierten Ausblöcken. Einige Autoren haben sich jedoch die Zeit genommen, um das Parsen innerhalb von Here-Strings sicherzustellen. Mit R haben wir auch keine mehrzeiligen Kommentare oder Here-Strings, aber die Verwendung unsichtbarer Ausdrücke in RStudio gibt all das Gute.

Solange es keine Backticks in dem Abschnitt gibt, die für mehrzeilige Kommentare, Here-Strings oder nicht ausgeführte Kommentarblöcke verwendet werden sollen, kann dies etwas Wertvolles sein.

#### 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!"

Und hier ist das Bild ...

Structured Comments

20
Thell

Ich kann mir zwei Möglichkeiten vorstellen. Die erste Option ist die Verwendung eines Editors, der es erlaubt, Kommentare und Kommentare zu blockieren (z. B. Eclipse). Die zweite Option ist die Verwendung einer if-Anweisung. Damit können Sie jedoch nur die korrekte R-Syntax "kommentieren". Daher ist ein guter Editor der bevorzugte Workaround.

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

}
11
Thierry

Wenn es unglaublich wäre, dass keine Sprache dafür sorgen würde.

Dies ist wahrscheinlich die sauberste Problemumgehung:

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

Abgesehen von der übertriebenen Möglichkeit, mehrzeilige Codes durch die Installation von RStudio zu kommentieren, können Sie Notepad ++ verwenden, da es die Syntaxhervorhebung von R unterstützt

(Mehrzeilen auswählen) -> Bearbeiten -> Kommentar/Kommentar -> Blockkommentar ein-/ausschalten

Beachten Sie, dass Sie den Code zuerst als .R-Quelle speichern müssen (rot hervorgehoben).

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

7
im_chc

Ich verwende vim, um das R-Skript zu bearbeiten. 

Angenommen, das R-Skript ist test.R und enthält "Line 1", "Line 2" und "Line 3" in 3 separaten Zeilen.

Ich öffne test.R in der Befehlszeile mit Vim durch Eingabe von "vim test.R" . Dann gehe ich zur ersten Zeile, die ich auskommentieren möchte, tippe "Control-V" und den Pfeil nach unten zur letzten Zeile Wenn Sie auskommentieren möchten, geben Sie einen Großbuchstaben ein, z. B. "I" für Einfügung, geben Sie "#" ein, und drücken Sie die Escape-Taste, um jeder Zeile, die ich ausgewählt habe, "#" hinzuzufügen, indem Sie den gewünschten Wert festlegen. Speichern Sie die Datei in Vim und beenden Sie Vim, indem Sie ": wq" eingeben. Änderungen sollten in Rstudio angezeigt werden.

Um die Kommentare in Vim zu löschen, beginnen Sie in der ersten Zeile über dem Zeichen "#", das Sie löschen möchten, führen Sie erneut "Control-V" aus und gehen Sie bis zur letzten Zeile, aus der Sie ein "#" löschen möchten. Geben Sie dann "dd" ein. Die Zeichen "#" sollten gelöscht werden.

Es gibt Sekunden der Verzögerung, wenn Änderungen an test.R in Vim in Rstudio angezeigt werden.

2
Qian Zhang

In RStudio Eine einfache Möglichkeit, dies zu tun, besteht darin, Ihren Kommentar zu schreiben, und sobald Sie STRG + UMSCHALT + C verwendet haben, um Ihre Codezeile zu kommentieren, verwenden Sie STRG + UMSCHALT + /, um Ihren Kommentar zur Vereinfachung in mehrere Zeilen umzufalten Lesen.

0
Mark Stevenson

In Python machen Sie vor und nach den Kommentaren einen mehrzeiligen Kommentar mit 3x einfachen Anführungszeichen. Ich habe es in R probiert und es scheint auch zu funktionieren. 

Z.B.

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