Domanda

Io (una specie di) conosco già la risposta a questa domanda. Ma ho pensato che fosse quello che viene chiesto così frequentemente nell'elenco degli Utenti R, che dovrebbe esserci una buona risposta solida. Per quanto ne so, in R. non esiste una funzionalità di commento multilinea in R. Quindi, qualcuno ha qualche buona soluzione?

Mentre un bel po 'di lavoro in R di solito coinvolge sessioni interattive (il che mette in dubbio la necessità di commenti multilinea), ci sono momenti in cui ho dovuto inviare script a colleghi e compagni di classe, molti dei quali coinvolgono blocchi non banali di codice. E per le persone che provengono da altre lingue è una domanda abbastanza naturale.

In passato ho usato le virgolette. Poiché le stringhe supportano le interruzioni di riga, eseguendo uno script R con

"
Here's my multiline comment.

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

funziona bene. Qualcuno ha una soluzione migliore?

È stato utile?

Soluzione

Questo appare regolarmente nella mailing list, vedi ad esempio questa recente discussione su r-help . La risposta del consenso di solito è quella mostrata sopra: quella dato che la lingua non ha supporto diretto, è necessario

  • lavora con un editor che ha comandi regione-commento, e la maggior parte degli editor R avanzati
  • usa i if (FALSE) proposti in precedenza, ma nota che richiede ancora un'analisi completa e quindi deve essere sintatticamente corretto

Altri suggerimenti

Puoi farlo facilmente in RStudio :

seleziona il codice e fai clic su CTR + MAIUSC + C per commentare / decommentare il codice.

Un trucco per RStudio che ho appena scoperto è usare # ' poiché questo crea una sezione di commento autoespandibile (quando torni a una nuova riga da tale linea o inserisci nuove righe in tale sezione viene automaticamente commentata).

[Aggiorna] Basato su commenti.

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

[Risposta originale]

Ecco un altro modo ... guarda la foto in fondo. Taglia e incolla il blocco di codice in RStudio.

I commenti su più righe che rendono efficace l'utilizzo di un IDE più sono un "buono", la maggior parte degli IDE o dei semplici editor non ha l'evidenziazione del testo all'interno di semplici blocchi commentati; sebbene alcuni autori abbiano impiegato del tempo per garantire l'analisi all'interno delle stringhe qui. Con R non abbiamo nemmeno commenti a più righe o stringhe qui, ma l'uso di espressioni invisibili in RStudio dà tutta quella bontà.

Fintanto che non ci sono backtick nella sezione che si desidera utilizzare per commenti multilinea, stringhe qui o blocchi di commenti non eseguiti, questo potrebbe valere la pena.

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

Ed ecco la foto ...

Commenti strutturati

Mi vengono in mente due opzioni. La prima opzione è quella di utilizzare un editor che consente di bloccare commenti e commenti (ad es. Eclipse). La seconda opzione è usare un'istruzione if. Ma ciò ti consentirà solo di "commentare" la sintassi R corretta. Quindi un buon editor è la soluzione alternativa preferita.

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

}

Se trovi incredibile che qualsiasi lingua non possa soddisfare questo.

Questa è probabilmente la soluzione più pulita:

anything="
first comment line
second comment line
"

Oltre a utilizzare il modo eccessivo per commentare i codici multilinea semplicemente installando RStudio, è possibile utilizzare Notepad ++ in quanto supporta l'evidenziazione della sintassi di R

(Seleziona più righe) - > Modifica - > Commento / Uncomment - > Attiva / disattiva commento blocco

Nota che devi prima salvare il codice come sorgente .R (evidenziato in rosso)

Nota che devi prima salvare il codice come sorgente .R (evidenziato in rosso)

Uso vim per modificare lo script R.

Supponiamo che lo script R sia test.R, che contenga "Linea 1", "Linea 2" e "Linea 3". su 3 linee separate.

Apro test.R sulla riga di comando con Vim digitando "vim test.R". Quindi vado alla prima riga che voglio commentare, digito " Control-V " ;, freccia giù fino all'ultima riga che voglio commentare, digita una maiuscola, cioè " I " per inserire, digita " # " ;, quindi premi il tasto Esc per aggiungere " # " per ogni riga selezionata selezionando la freccia verso il basso. Salvare il file in Vim e quindi uscire da Vim digitando ": wq " ;. Le modifiche dovrebbero essere visualizzate in Rstudio.

Per eliminare i commenti in Vim, inizia dalla prima riga sopra il carattere " # " vuoi eliminare, fai ancora " Control-V " ;, e freccia giù fino all'ultima riga che vuoi eliminare un " # " a partire dal. Quindi digitare " dd " ;. Il " # " i segni dovrebbero essere eliminati.

C'è un intervallo di tempo di secondi tra quando le modifiche al test. R in Vim si riflettono in Rstudio.

In RStudio un modo semplice per farlo è scrivere il tuo commento e dopo aver usato CTRL + Maiusc + C per commentare la riga di codice, quindi utilizzare CTRL + MAIUSC + / per ridisporre il commento su più righe per facilitare la lettura.

In Python fai un commento su più righe con 3 virgolette singole prima e dopo i commenti. Ho provato questo in R e sembra funzionare anche.

Eg.

'''
This is a comment
This is a second comment
'''
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top