2012-02-02 75 views
45

Possible Duplicate:
R: Multiline Comment Workarounds?R: come commento blocco di codice

voglio commentare diverse righe di codice in R. C'è un modo di farlo senza dover mettere un # prima di ogni riga - un po 'come /* blocked out code */ in SAS ?

+0

R non esegue commenti su più righe. Vedi thread simile: http://stackoverflow.com/questions/4131338/is-it-possibile-per-have-a-multi-line-comments-in-r – Maiasaura

+0

Il mio miglior suggerimento sarebbe quello di scrivere una macro (o plugin nel caso in cui si usi qualcosa come Sublime Text 2) e assegnare una combinazione di tasti in modo tale che il testo selezionato (cioè i commenti) ottenga un # in primo piano una volta che si preme il tasto appropriato. – Maiasaura

+0

Questa è un'idea. Peccato che R non lo faccia in modo nativo. Grazie, Maiasaura. – user702432

risposta

26

La maggior parte degli editor utilizza una sorta di scorciatoia per commentare blocchi di codice. Gli editor predefiniti usano qualcosa come comando o controllo e virgoletta singola per commentare le righe di codice selezionate. In RStudio è comando o controllo '/'. Controlla nel tuo editor.

Sta ancora commentando riga per riga, ma rimuove anche le righe selezionate. Per il Mac RGUI è l'opzione-comando '(immagino che Windows sia l'opzione di controllo). Per Rstudio è solo comando o controllo + maiusc + C di nuovo.

+3

Sì, questa è una funzione super-pratica. In Emacs, è sufficiente evidenziare l'area in attesa di commento e digitare 'C-x r t 'seguito dai caratteri che si desidera aggiungere (qualcosa come' "##" '). Per indentare un blocco di codice per SO, fai la stessa cosa, ma sostituisci gli ultimi tre caratteri con quattro spazi! –

+2

In Emacs puoi anche usare 'M-x comment-region'. Non sapevo di 'C-x r', grazie! –

+16

CTRL + MAIUSC + C alterna il commento della selezione in eclissi/Statet. –

35

Una sorta di blocco di commento utilizza un'istruzione if:

if(FALSE) { 
    all your code 
} 

Funziona, ma ho quasi sempre utilizzare il blocco di commento opzioni dei miei editori (RStudio, Kate, Kwrite).

19

avvolgerla in una funzione non utilizzata:

.f = function() { 

## unwanted code here: 

} 
1

Io uso RStudio o Emacs e utilizzare sempre le scorciatoie editor disponibile per commentare regioni. Se questa non è una possibilità, puoi usare la risposta di Paolo, ma funziona solo se il tuo codice è sintatticamente corretto.

Ecco un altro modo sporco che ho trovato, avvolgere in scan() e rimuovere il risultato. Memorizza il commento in memoria per un breve periodo, quindi probabilmente non funzionerà con commenti molto grandi. Meglio ancora è mettere solo i segni # davanti a ogni riga (possibilmente con le scorciatoie dell'editor).

foo <- scan(what="character") 
These are comments 
These are still comments 
Can also be code: 
x <- 1:10 
One line must be blank 

rm(foo) 
+2

Variabile anche più sporca. Definisci '" # "<- function() invisible (scan (what = character()))' quindi avvia il blocco dei commenti con '" # "()'. –

+0

La risposta precedente dovrebbe in realtà avere dei backtick piuttosto che delle virgolette (anche se funziona in entrambi i casi), ma mi vergognerei se riuscirò a capire come ottenere i backtick in un blocco di codice all'interno di un commento. –

+0

Richie, bel suggerimento, ma le barre genereranno messaggi di errore: Errore: imprevisto '/' in: "' # # (# inizio del commento http:/" – PatrickT

0

Ho trattato questo a talkstats.com in posti 94, 101 & 103 trovato nel thread: Share Your Code. Come altri hanno già detto, Rstudio potrebbe essere un modo migliore per andare. Memorizzo queste funzioni nel mio profilo .RRF e le uso effettivamente a ma per bloccare automaticamente le linee di codice rapidamente.

Non proprio bello come speravate ma potrebbe essere un approccio.

Problemi correlati