여러 줄 주석 해결 방법?


108

나는 이미이 질문에 대한 답을 알고 있습니다. 하지만 R 사용자 목록에서 자주 질문을받는 것이 하나의 확실한 좋은 대답이 있어야한다고 생각했습니다. 내가 아는 한 R에는 여러 줄 주석 기능이 없습니다. 그래서 누구에게 좋은 해결 방법이 있습니까?

R에서 꽤 많은 작업은 일반적으로 대화 형 세션 (여러 줄 주석의 필요성에 의문을 던짐)과 관련되지만, 동료와 급우에게 스크립트를 보내야하는 경우가 많으며, 그 중 대부분은 사소한 코드 블록과 관련됩니다. 그리고 다른 언어에서 온 사람들에게는 상당히 자연스러운 질문입니다.

과거에는 따옴표를 사용했습니다. 문자열은 줄 바꿈을 지원하므로 다음을 사용하여 R 스크립트를 실행합니다.

"
Here's my multiline comment.

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

잘 작동합니다. 누구에게 더 나은 솔루션이 있습니까?

답변:


50

이것은 메일 링리스트에 꽤 정기적으로 올라옵니다. 예를 들어 r-help의 최근 스레드를보십시오 . 합의 된 대답은 일반적으로 위에 표시된 것입니다. 언어가 직접적인 지원이 없다는 점을 감안할 때 다음 중 하나를 수행해야합니다.

  • region-to-comment 명령이있는 편집기로 작업하며 대부분의 고급 R 편집기는
  • if (FALSE)이전에 제안 된 구성을 사용 하지만 여전히 완전한 구문 분석이 필요하므로 구문이 정확해야합니다.

감사. 여러 줄로 된 댓글에 대한 전망이 있는지 여부, 그것이 철학적 인 것인지 여부 등에 대해 조금 확장 해 주시겠습니까?
HamiltonUlmer

1
나는 이것이 파서의 특성 때문이라고 생각하며 R은 대부분 여러 줄 주석이 더 일반적인 파일 기반 인터프리터 라기보다는 대화 형 환경 (예 : 명령 줄)이기도합니다. 그래서 철학적이지 않습니다. 이런 식으로 성장했습니다.
Dirk Eddelbuettel

이제 R이 코드를 컴파일 했으므로 여러 줄 주석이 나타날 것이라고 생각합니까?
Ari B. Friedman

아니요, 기본 파서가 변경되지 않았기 때문입니다.
Dirk Eddelbuettel

간단한 코드 블록 활성화 / 비활성화 토글보다 here-string 유형 문서화 및 주석에 더 많은 것이지만 올바른 구문이 필요하지 않은 답변을 게시했습니다.
Thell

70

RStudio 에서 쉽게 할 수 있습니다 .

코드를 선택하고 CTR+ SHIFT+ C 를 클릭하여 코드에 주석을 달거나 주석을 제거합니다.


36

내가 방금 발견 한 RStudio의 깔끔한 트릭 #'은자가 확장 주석 섹션을 생성 하기 때문에 사용 하는 것입니다 (이러한 줄에서 새 줄로 돌아가거나 이러한 섹션에 새 줄을 삽입하면 자동으로 주석이됩니다).


1
+1하지만 먼저 틀렸어요-아마도 이것은 더 읽기 #'
쉬울 것입니다

이것은 깔끔합니다! 훌륭합니다. 다른 경우에 사용할 수 있기 때문에 누군가가이 답변을 @Salvador에서 제공 한 답변과 결합해야합니다.
Alex Feng

21

[업데이트] 댓글을 기반으로합니다.

# 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 또는 간단한 편집기는 주석 처리 된 간단한 블록 내에서 텍스트를 강조 표시하지 않습니다. 일부 작성자는 here-string 내에서 구문 분석을 보장하기 위해 시간을 할애했습니다. R을 사용하면 여러 줄 주석이나 여기 문자열이 없지만 RStudio에서 보이지 않는 식을 사용하면 모든 장점을 얻을 수 있습니다.

여러 줄 주석, here-strings 또는 실행되지 않은 주석 블록에 사용하려는 섹션에 백틱이없는 한 이것은 가치가있을 수 있습니다.

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

그리고 여기에 사진이 있습니다 ...

구조화 된 주석


1
comment=function(z){invisible(expression(z))}사람들이 도대체 무슨 일이 일어나고 있는지 이해하는 데 도움이 될만한 것을 정의 할 수 있다고 생각합니다 !
Spacedman 2012

1
아마도 더 좋을 것 Comments<-function(`@Comments`)rm(`@Comments`)입니다. 댓글은 이미 유효한 기능이기 때문에.
Thell

1
arg로 실제로 무엇을해야합니까? 역 따옴표로 구분 된 여러 줄식이 Comments=function(x){}어디에 있는지 작동합니다 x. 그것은 ... 그것을 평가하는 시도하지 않습니다
Spacedman

에코가있는 소스는 빈 중괄호에 invisible ()이 포함되지 않은 경우 NULL을 표시합니다
Thell

그러나를 사용 Comment <- function(`@Comments`) {invisible()}하면 주석이 너무 길면 오류가 발생합니다.variable names are limited to 10000 bytes
Nir

11

두 가지 옵션을 생각할 수 있습니다. 첫 번째 옵션은 주석 및 주석 해제를 차단할 수있는 편집기 (예 : Eclipse)를 사용하는 것입니다. 두 번째 옵션은 if 문을 사용하는 것입니다. 그러나 그것은 올바른 R 구문을 '주석'할 수만 있습니다. 따라서 좋은 편집기가 선호되는 해결 방법입니다.

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

}

9

어떤 언어도 이것을 충족시키지 못한다는 것이 믿어지지 않는다면.

이것은 아마도 가장 깨끗한 해결 방법 일 것입니다.

anything="
first comment line
second comment line
"

3
귀하의 의견에 따옴표를 원하지 않는 한 잘 작동합니다;)
abalter

7

RStudio를 설치하는 것만으로도 여러 줄 코드를 주석 처리하는 과도하게 사용하는 방법 외에도 R의 구문 강조 표시를 지원하므로 Notepad ++ 를 사용할 수 있습니다.

(여러 줄 선택)-> 편집-> 주석 / 주석 해제-> 블록 주석 토글

먼저 코드를 .R 소스로 저장해야합니다 (빨간색으로 강조 표시됨).

먼저 코드를 .R 소스로 저장해야합니다 (빨간색으로 강조 표시됨).


2

vim을 사용하여 R 스크립트를 편집합니다.

R 스크립트가 test.R이고 "Line 1", "Line 2"및 "Line 3"이 3 개의 개별 줄에 포함되어 있다고 가정 해 보겠습니다.

명령 줄에서 "vim test.R"을 입력하여 test.R을 엽니 다. 그런 다음 주석 처리 할 첫 번째 줄로 이동하여 "Control-V"를 입력하고 아래쪽 화살표를 주석 처리 할 마지막 줄로 이동 한 다음 대문자 I, 즉 "I"를 입력하고 "#"을 입력 한 다음 Esc 키를 눌러 선택한 모든 줄에 "#"을 추가합니다. Vim에 파일을 저장하고 ": wq"를 입력하여 Vim을 종료합니다. 변경 사항은 Rstudio에 표시되어야합니다.

Vim에서 주석을 삭제하려면 삭제하려는 문자 "#"의 맨 위에있는 첫 번째 줄에서 시작하고 다시 "Control-V"를 누른 다음 "#"을 삭제할 마지막 줄까지 아래로 화살표를 누릅니다. 그런 다음 "dd"를 입력합니다. "#"기호를 삭제해야합니다.

Vim의 test.R 변경 사항이 Rstudio에 반영되는 시간 사이에는 몇 초 정도의 지연 시간이 있습니다.


0

에서 RStudio 이 작업을 수행 할 수있는 쉬운 방법은 당신의 코멘트를 작성하는 것입니다 당신이 코드의 회선을 언급 CTRL + 시프트 + C를 사용한 경우는 읽기 쉽게 여러 행에 의견을 리플 로우 CTRL + 시프트 + /를 사용합니다.


-2

Python에서는 주석 앞뒤에 3x 작은 따옴표로 여러 줄 주석을 작성합니다. 나는 이것을 R에서 시도했고 또한 작동하는 것 같습니다.

예 :

'''
This is a comment
This is a second comment
'''
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.