Pregunta

Yo (más o menos) ya sé la respuesta a esta pregunta. Pero pensé que es uno que se pregunta con tanta frecuencia en la lista de usuarios de R, que debería haber una buena respuesta sólida. Que yo sepa, no existe una funcionalidad de comentarios multilínea en R. Entonces, ¿alguien tiene alguna buena solución?

Si bien un poco de trabajo en R generalmente implica sesiones interactivas (lo que arroja dudas sobre la necesidad de comentarios multilínea), hay momentos en los que he tenido que enviar guiones a colegas y compañeros de clase, gran parte de los cuales implica bloques no triviales de código. Y para las personas que vienen de otros idiomas es una pregunta bastante natural.

En el pasado he usado citas. Dado que las cadenas admiten saltos de línea, ejecutar un script R con

"
Here's my multiline comment.

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

funciona bien. ¿Alguien tiene una mejor solución?

¿Fue útil?

Solución

Esto aparece en la lista de correo con bastante regularidad, consulte por ejemplo este hilo reciente sobre r-help . La respuesta consensuada generalmente es la que se muestra arriba: que dado que el idioma no tiene soporte directo, debe

  • trabaja con un editor que tiene comandos de región a comentario, y los editores R más avanzados lo hacen
  • use las construcciones if (FALSE) sugeridas anteriormente, pero tenga en cuenta que todavía requiere un análisis completo y, por lo tanto, debe ser sintácticamente correcto

Otros consejos

Puede hacerlo fácilmente en RStudio :

seleccione el código y haga clic en CTR + SHIFT + C comentar / descomentar código.

Un buen truco para RStudio que acabo de descubrir es usar # ' ya que esto crea una sección de comentarios autoexpandible (cuando regresa a una nueva línea desde dicha línea o inserta nuevas líneas en dicha sección se comenta automáticamente).

[Actualización] Basado en comentarios.

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

[Respuesta original]

Aquí hay otra forma ... mira la foto en la parte inferior. Corte y pegue el bloque de código en RStudio.

Los comentarios multilínea que hacen que el uso de un IDE más sea efectivo es una "buena cosa", la mayoría de los IDE o editores simples no tienen resaltado de texto dentro de bloques simples de comentarios; aunque algunos autores se han tomado el tiempo para garantizar el análisis dentro de las cadenas aquí. Con R tampoco tenemos comentarios de varias líneas o cadenas aquí, pero el uso de expresiones invisibles en RStudio ofrece toda esa bondad.

Mientras no haya ningún backticks en la sección que se desee utilizar para comentarios multilínea, cadenas aquí o bloques de comentarios no ejecutados, esto podría ser algo que 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!"

Y aquí está la foto ...

Comentarios estructurados

Puedo pensar en dos opciones. La primera opción es utilizar un editor que permita bloquear comentarios y comentarios (por ejemplo, Eclipse). La segunda opción es usar una declaración if. Pero eso solo le permitirá 'comentar' la sintaxis correcta de R. Por lo tanto, un buen editor es la solución preferida.

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

}

Si le parece increíble que cualquier idioma no se adapte a esto.

Esta es probablemente la solución más limpia:

anything="
first comment line
second comment line
"

Además de utilizar la forma exagerada de comentar códigos de varias líneas simplemente instalando RStudio, puede utilizar Notepad ++ ya que admite el resaltado de sintaxis de R

(Seleccionar líneas múltiples) - > Editar - > Comentario / No comentario - > Alternar comentario de bloque

Tenga en cuenta que primero debe guardar el código como fuente .R (resaltado en rojo)

Tenga en cuenta que primero debe guardar el código como fuente .R (resaltado en rojo)

Yo uso vim para editar el script R.

Digamos que el script R es test.R, que contiene say '' Line 1 '', '' Line 2 '' y '' Line 3 '' en 3 líneas separadas.

Abro test.R en la línea de comando con Vim escribiendo '' vim test.R ''. Luego voy a la primera línea que quiero comentar, escribo '' Control-V '', flecha hacia abajo a la última línea que quiero comentar, escribo una I mayúscula, es decir, '' I '' para insertar, escriba " # " ;, y luego presione la tecla Escape para agregar " # " a cada línea que seleccioné haciendo una flecha hacia abajo. Guarde el archivo en Vim y luego salga de Vim escribiendo ": wq " ;. Los cambios deberían aparecer en Rstudio.

Para eliminar los comentarios en Vim, comience en la primera línea en la parte superior del carácter " # " desea eliminar, nuevamente haga " Control-V " ;, y la flecha hacia abajo hasta la última línea que desea eliminar un " # " desde. Luego escriba "dd". El " # " los signos deben eliminarse.

Hay segundos de retraso entre los cambios en la prueba. R en Vim se reflejan en Rstudio.

En RStudio , una manera fácil de hacerlo es escribir su comentario y una vez que haya usado CTRL + Shift + C para comentar su línea de código, luego use CTRL + SHIFT + / para reenviar su comentario en varias líneas para facilitar la lectura.

En Python haces un comentario multilínea con 3x comillas simples antes y después de los comentarios. Intenté esto en R y parece funcionar también.

Ej.

'''
This is a comment
This is a second comment
'''
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top