Soluzioni alternative di commento multilinea?

Io (sorta di) conosco già la risposta a questa domanda. Ma ho pensato che è uno che viene chiesto così frequentemente nella lista degli utenti R, che ci dovrebbe essere una buona risposta. Per quanto ne so, non esiste una funzionalità di commento multilinea in R. Quindi, qualcuno ha qualche buona soluzione?

Mentre un bel po ‘di lavoro in R implica solitamente sessioni interattive (che mettono in dubbio la necessità di commenti multilinea), ci sono momentjs in cui ho dovuto inviare script a colleghi e compagni di class, molti dei quali riguardano blocchi di codice non banali. E per le persone che arrivano da altre lingue è una questione abbastanza naturale.

In passato ho usato le virgolette. Poiché le string supportano 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?

Questo appare abbastanza spesso sulla mailing list, vedi ad esempio questo thread recente su r-help . La risposta di consenso è solitamente quella mostrata sopra: che dato che la lingua non ha un supporto diretto, è necessario

  • lavorare con un editor con comandi region-to-comment e gli editor R più avanzati
  • usa i costrutti if (FALSE) suggeriti in precedenza ma nota che richiede ancora un parsing completo e deve quindi essere sintatticamente corretto

Puoi farlo facilmente in RStudio :

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

Un trucco perfetto per RStudio che ho appena scoperto è usare #' quanto ciò crea una sezione di commento autoespandibile (quando si ritorna a una nuova linea da tale linea o si inseriscono nuove linee in tale sezione, viene automaticamente commentato).

[Aggiornamento] In base ai 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 ... controlla la foto in basso. Taglia e incolla il blocco di codice in RStudio.

I commenti multilinea che rendono più efficace l'utilizzo di un IDE sono una "buona cosa", la maggior parte degli IDE o dei semplici editor non hanno l'evidenziazione del testo all'interno di semplici blocchi commentati; anche se alcuni autori hanno preso il tempo per garantire l'analisi all'interno di stringhe qui. Con R non abbiamo né commenti multi-linea né stringhe qui, ma l'uso di espressioni invisibili in RStudio dà tutta quella bontà.

Finché non ci sono backtick nella sezione che si desidera utilizzare per un commento multilinea, stringhe qui o blocchi di commento non eseguiti, questo potrebbe essere qualcosa che valga 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

Posso pensare a due opzioni. La prima opzione è quella di utilizzare un editor che consente di bloccare commenti e commenti (ad esempio Eclipse). La seconda opzione è usare un’istruzione if. Ma questo ti permetterà solo di commentare la syntax 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 risponda a questo.

Questa è probabilmente la soluzione più pulita:

 anything=" first comment line second comment line " 

Oltre a utilizzare il modo eccessivo di commentare i codici multilinea semplicemente installando RStudio, è ansible utilizzare Notepad ++ poiché supporta l’evidenziazione della syntax di R

(Seleziona linee multiple) -> Modifica -> Commento / Decommentazione -> Attiva 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)

Io uso vim per modificare lo script R.

Diciamo che lo script R è test.R, che contiene “Linea 1”, “Linea 2” e “Linea 3” su 3 linee separate.

Apro test.R sulla riga di comando con Vim digitando “vim test.R”. Poi vado alla prima linea che voglio commentare, digita “Control-V”, freccia in basso all’ultima riga che voglio commentare, digita un capitale I cioè “I” per inserire, digita “#”, e poi premi il tasto Esc per aggiungere “#” a ogni linea che seleziono scorrendo verso il basso. Salva il file in Vim e quindi esci da Vim digitando “: wq”. Le modifiche dovrebbero apparire in Rstudio.

Per eliminare i commenti in Vim, iniziare dalla prima riga in cima al carattere “#” che si desidera eliminare, ancora “Control-V”, e la freccia verso il basso fino all’ultima riga da cui si desidera eliminare un “#” da. Quindi digitare “dd”. I segni “#” dovrebbero essere cancellati.

Esiste un intervallo di secondi tra il momento in cui le modifiche a test.R in Vim si riflettono in Rstudio.

In RStudio un modo semplice per farlo è scrivere il tuo commento e una volta che hai usato CTRL + MAIUSC + C per commentare la tua linea di codice, quindi usa CTRL + MAIUSC + / per ridisegnare il tuo commento su più righe per facilitare la lettura.

In Python fai un commento multilinea con 3x virgolette singole prima e dopo i commenti. Ho provato questo in R e sembra funzionare anche.

Per esempio.

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