Обходные пути для многострочных комментариев?

StackOverflow https://stackoverflow.com/questions/1231195

  •  22-07-2019
  •  | 
  •  

Вопрос

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

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

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

"
Here's my multiline comment.

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

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

Это было полезно?

Решение

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

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

Другие советы

Это легко сделать в RStudio :

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

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

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

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

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

Структурированные комментарии

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

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

}

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

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

anything="
first comment line
second comment line
"

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

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

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

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

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

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

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

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

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

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

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

Например.

'''
This is a comment
This is a second comment
'''
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top