Методы обхода многострочных комментариев? - PullRequest
102 голосов
/ 05 августа 2009

Я (вроде) уже знаю ответ на этот вопрос. Но я подумал, что это тот вопрос, который так часто спрашивают в списке пользователей R, что должен быть один твердый хороший ответ. Насколько мне известно, в R. нет функции многострочного комментария. Итак, есть ли у кого-нибудь хорошие обходные пути?

Несмотря на то, что большая часть работы в R обычно включает интерактивные сеансы (что ставит под сомнение необходимость многострочных комментариев), бывают случаи, когда мне приходилось отправлять сценарии коллегам и одноклассникам, большая часть которых включает нетривиальные блоки код. А для людей с других языков это вполне закономерный вопрос.

В прошлом я использовал цитаты. Поскольку строки поддерживают разрывы строк, запуск сценария R с

"
Here's my multiline comment.

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

отлично работает. У кого-нибудь есть лучшее решение?

Ответы [ 10 ]

62 голосов
/ 14 апреля 2013

Вы можете сделать это легко в RStudio :

выберите код и нажмите CTR + SHIFT + C комментировать / раскомментировать код.

47 голосов
/ 05 августа 2009

Это довольно часто появляется в списке рассылки, см. , например, эту недавнюю ветку по r-help . Консенсусный ответ обычно тот, который показан выше: если у языка нет прямой поддержки, вы должны либо

  • работает с редактором, который имеет команды для комментариев к регионам, а большинство продвинутых редакторов R делают
  • используйте конструкции if (FALSE), предложенные ранее, но обратите внимание, что он все еще требует полного анализа и, следовательно, должен быть синтаксически правильным
31 голосов
/ 04 июня 2013

Изящный прием для RStudio, который я только что обнаружил, заключается в использовании #', поскольку это создает саморасширяющийся раздел комментариев (когда вы возвращаетесь к новой строке из такой строки или вставляете новые строки в такой раздел, это автоматически комментарий).

20 голосов
/ 22 ноября 2012

[Обновление] На основе комментариев.

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

[Оригинальный ответ]

Вот еще один способ ... посмотрите на картинку внизу. Вырежьте и вставьте блок кода в RStudio.

Многострочные комментарии, которые делают использование IDE more эффективными, являются «хорошей вещью», большинство IDE или простых редакторов не имеют выделения текста в простых закомментированных блоках; хотя некоторые авторы нашли время, чтобы обеспечить разбор внутри строк. С R у нас нет многострочных комментариев или здесь-строк, но использование невидимых выражений в RStudio дает все это.

Пока в разделе нет обратных ссылок, которые желательно использовать для многострочных комментариев, здесь-строк или неисполненных блоков комментариев, тогда это может быть чем-то стоящим.

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

А вот и картинка ...

Structured Comments

11 голосов
/ 05 августа 2009

Я могу придумать два варианта. Первый вариант - использовать редактор, который позволяет блокировать комментарии и раскомментировать (например, Eclipse). Второй вариант - использовать оператор if. Но это только позволит вам «комментировать» правильный синтаксис R. Следовательно, хорошим редактором является предпочтительный обходной путь.

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

}
8 голосов
/ 04 ноября 2012

Если сочтете невероятным, что ни один язык не будет обслуживать это.

Это, вероятно, самый чистый обходной путь:

anything="
first comment line
second comment line
"
7 голосов
/ 13 декабря 2013

Помимо использования избыточного способа комментирования многострочных кодов, просто установив RStudio, вы можете использовать Notepad ++ , поскольку он поддерживает подсветку синтаксиса R

(выберите несколько строк) -> Изменить -> Комментарий / Раскомментировать -> Переключить комментарий блока

Обратите внимание, что сначала вам нужно сохранить код как источник .R (выделено красным)

Note that you need to save the code as a .R source first (highlighted in red)

2 голосов
/ 27 сентября 2015

Я использую vim для редактирования скрипта R.

Допустим, сценарий R - это test.R, содержащий, скажем, «Строка 1», «Строка 2» и «Строка 3» на трех отдельных строках.

Я открываю test.R в командной строке с помощью Vim, набрав «vim test.R». Затем я перехожу к первой строке, которую хочу закомментировать, набираю «Control-V», стрелку вниз до последней строки, которую я хочу закомментировать, набираю заглавную букву I, т. Е. «I» для вставки, введите «#», а затем нажмите клавишу Escape, чтобы добавить «#» к каждой строке, которую я выбрал, стрелкой вниз. Сохраните файл в Vim и выйдите из Vim, набрав ": wq". Изменения должны появиться в Rstudio.

Чтобы удалить комментарии в Vim, начните с первой строки в верхней части символа «#», который вы хотите удалить, снова выполните «Control-V» и переместите стрелку вниз до последней строки, которую вы хотите удалить, «#» " от. Затем введите «дд». Знаки «#» следует удалить.

Существует задержка в секундах между моментами, когда изменения в test.R в Vim отражаются в Rstudio.

0 голосов
/ 04 февраля 2018

В Python вы делаете многострочный комментарий с 3x одинарными кавычками до и после комментариев.Я попробовал это в R, и это, кажется, работает.

Например.

'''
This is a comment
This is a second comment
'''
0 голосов
/ 28 декабря 2017

В RStudio простой способ сделать это - написать свой комментарий, и после того, как вы используете CTRL + Shift + C, чтобы прокомментировать вашу строку кода, затем используйте CTRL + SHIFT + /, чтобы перекомпоновать ваш комментарий на несколько строк для удобства чтения.

...