2010-11-09 4 views
64

Ho trovato questo old thread (da oltre un anno fa), il che spiega come mai R non supporta i commenti su più righe (come/* commento */di PHP, ad esempio).E 'possibile avere commenti su più righe in R?

Mi chiedo se questo è stato risolto nell'ultimo anno o se ci sono altre alternative? (Ad esempio, in notepad ++ con npptor, puoi contrassegnare un gruppo di righe e premere ctrl + q per contrassegnarle tutte come commenti, esistono soluzioni simili per altri IDE?)

+0

Sarebbe bello avere commenti multilinea e anche commenti annidati o qualche tipo di commenti gerarchici. In questo modo potrebbe essere meglio piegato. – skan

+0

In RStudio puoi iniziare il tuo commento con ** '# '** e le seguenti righe verranno automaticamente commentate. –

risposta

36

È possibile, se si desidera, utilizzare stringhe indipendenti per commenti su più righe — Ho sempre pensato che fosse più carino dei blocchi if (FALSE) { }. La stringa verrà valutata e quindi scartata, quindi finché non sarà l'ultima riga in una funzione non accadrà nulla.

"This function takes a value x, and does things and returns things that 
take several lines to explain" 
doEverythingOften <- function(x) { 
    # Non! Comment it out! We'll just do it once for now. 
    "if (x %in% 1:9) { 
      doTenEverythings() 
    }" 
    doEverythingOnce() 
    ... 
    return(list(
     everythingDone = TRUE, 
     howOftenDone = 1 
    )) 
} 

Il limite principale è che quando stai commentando roba, hai avuto modo di guardare i tuoi virgolette: se hai un tipo dentro, dovrete usare l'altro tipo per la commento; e se hai qualcosa come "stringhe con 'postrofi" all'interno di quel blocco, allora non c'è modo che questo metodo sia una buona idea. Ma poi c'è ancora il blocco if (FALSE).

L'altra limitazione, che entrambi i metodi hanno, è che è possibile utilizzare tali blocchi solo in punti in cui un'espressione sarebbe sintatticamente valida - non commentando parti di elenchi, ad esempio.

Riguardo a cosa fare in IDE: Sono un utente Vim e trovo lo NERD Commenter uno strumento assolutamente eccellente per commentare rapidamente o decommentare più righe. Molto user-friendly, molto ben documentato.

Infine, al prompt R (almeno sotto Linux), c'è la bella Alt - Maiusc - # per commentare la riga corrente. È molto bello mettere una linea "in attesa", se stai lavorando su una linea singola e poi ti rendi conto che per prima cosa hai bisogno di una fase di preparazione.

+0

Hello Esteis - riguardo a alt-shift- #, non funziona su Windows. Io uso "Esc", e penso che funzioni in modo simile a quello che descrivi. Grazie per tutti i suggerimenti. –

+0

Su Linux, la funzionalità per inserire commenti del genere è probabilmente dovuta alla libreria GNU 'readline'. Se funziona in R, probabilmente funzionerà per te in molte altre app, come 'bash' stesso. –

9

Nessun commento su più righe in R a partire da versione 2.12 e improbabile che cambi. Nella maggior parte degli ambienti, puoi commentare i blocchi evidenziando e alternando i commenti. In emacs, questo è 'M-x;'.

16

CTRL +SHIFT +C in Eclipse + StatET e Rstudio.

+0

Questa scorciatoia da tastiera funziona anche in RStudio (3.4.1, Mac). – hsl

+0

@hsl grazie, ho aggiunto questo alla mia risposta. –

8
if(FALSE) { 
... 
} 

preclude l'esecuzione di più righe. Tuttavia, queste righe devono ancora essere sintatticamente corrette, cioè non possono essere commenti nel senso giusto. Ancora utile per alcuni casi però.

+0

Questo è il mio schema di commenti multilinea di scelta. – Greg

+0

grazie @caracal, molto utile se si desidera saltare un intero blocco di codice pur essendo estremamente semplice commentare se si desidera elaborare lo stesso blocco un'altra volta '# if (FALSE) {' e '#}' – Gabriel123

4

Purtroppo, non v'è ancora alcuna multilinea commentando in R.

Se il vostro editor di testo supporta la colonna-mode, quindi utilizzarlo per aggiungere un po 'di #s in una sola volta. Se usi UltraEdit, Alt + c ti metterà in modalità colonna.

+0

UltraEdit ha anche un comando Aggiungi commento nel menu Modifica: Alt + e, n –

2

inserire il seguente nella vostra ~/.Rprofile del file:

exclude <- function(blah) { 
    "excluded block" 
} 

Ora, è possibile escludere i blocchi piace segue:

stuffiwant 

exclude({ 
    stuffidontwant 
    morestuffidontwant 
}) 
72

R Studio (ed Eclipse + StatET): Evidenziare il testo e utilizzare CTRL + MAIUSC + C per commentare più righe in Windows. oppure comando + MAIUSC + C in OS-X.

+2

Nel caso di duplicati, non pubblicare la stessa risposta più volte. –