Многострочные методы обхода комментариев?

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

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

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

"
Here my multiline comment.

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

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

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

# 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 более эффективными, - это "Хорошая вещь", большинство 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

Ответ 5

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

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

}

Ответ 6

Если вы считаете невероятным, что любой язык не подходит для этого.

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

anything="
first comment line
second comment line
"

Ответ 7

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

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

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

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

Ответ 8

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

Скажем, R script является тестом .R, содержащим слова "Линия 1", "Линия 2" и "Линия 3" на 3 отдельных строках.

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

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

В этом случае секундное время задержки между изменениями в test.R в Vim отражается в Rstudio.