web-dev-qa-db-ja.com

複数行コメントの回避策?

私は、この質問に対する答えをすでに知っています。しかし、私はそれがRユーザーリストで頻繁に尋ねられるものであり、1つのしっかりした良い答えがあるはずだと考えました。 私の知る限り、Rには複数行のコメント機能はありません。だから、誰かが良い回避策を持っていますか?

Rでのかなりの作業には通常、対話型セッション(複数行のコメントの必要性に疑問を投げかけます)が含まれますが、同僚やクラスメートにスクリプトを送信しなければならないことがあります。そして、他の言語から来ている人々にとって、それはかなり自然な質問です。

過去に引用符を使用しました。文字列は改行をサポートしているため、Rスクリプトを実行するには

"
Here's my multiline comment.

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

正常に動作します。誰もがより良い解決策を持っていますか?

103
HamiltonUlmer

これはメーリングリストにかなり定期的に掲載されています。 たとえば、r-helpの最近のスレッド を参照してください。コンセンサスの答えは通常上に示したものです:言語が直接サポートしていないことを考えると、

  • リージョンからコメントへのコマンドを持つエディターで動作し、ほとんどの高度なRエディターは
  • 前述のif (FALSE)構造を使用しますが、完全な解析が必要であり、構文的に正しい必要があることに注意してください
47

これは RStudio で簡単に行えます。

コードを選択してクリック CTR+SHIFT+C コードをコメント/コメント解除します。

63
Salvador Dali

私が今発見したRStudioの巧妙なトリックは、#'これは自己拡張コメントセクションを作成します(そのような行から新しい行に戻るか、そのようなセクションに新しい行を挿入すると、自動的にコメントになります)。

31
geotheory

[更新]コメントに基づく。

# 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では、複数行のコメントやhere-stringもありませんが、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

20
Thell

2つのオプションが考えられます。最初のオプションは、コメントとコメント解除をブロックできるエディターを使用することです(例:Eclipse)。 2番目のオプションは、ifステートメントを使用することです。しかし、それは正しいR構文を「コメント」することしかできません。したがって、適切なエディターが回避策として推奨されます。

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

}
11
Thierry

どの言語でもこれに対応できないと信じられない場合。

これはおそらく最もクリーンな回避策です。

anything="
first comment line
second comment line
"
8
R. Sake

RStudioをインストールするだけで過剰な方法で複数行コードをコメントする以外に、Rの構文強調表示をサポートする Notepad ++ を使用できます。

(複数行を選択)->編集->コメント/コメント解除->ブロックコメントの切り替え

最初にコードを.Rソースとして保存する必要があることに注意してください(赤で強調表示)

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

7
im_chc

Vimを使用してRスクリプトを編集します。

Rスクリプトがtest.Rであり、「Line 1」、「Line 2」、および「Line 3」が3行に分かれているとします。

「vim test.R」と入力して、Vimのコマンドラインでtest.Rを開きます。次に、コメントアウトする最初の行に移動して、「Control-V」と入力し、コメントアウトする最後の行に下矢印を押して、大文字の「I」を入力し、「#」と入力してから、 Escキーを押して、下矢印で選択したすべての行に「#」を追加します。 Vimでファイルを保存し、「:wq」と入力してVimを終了します。変更がRstudioに表示されるはずです。

Vimでコメントを削除するには、削除したい文字「#」の最初の行から開始し、再度「Control-V」を実行し、「#」を削除したい最後の行まで矢印を押します。次に「dd」と入力します。 「#」記号は削除する必要があります。

Vimのtest.Rへの変更がRstudioに反映されるまでに数秒の遅延時間があります。

2
Qian Zhang

RStudio でこれを行う簡単な方法は、コメントを記述し、CTRL + Shift + Cを使用してコード行をコメント化した後、CTRL + SHIFT + /を使用して複数のコメントにリフローすることです。読みやすくするための行。

0
Mark Stevenson

Pythonでは、コメントの前後に3重引用符で複数行のコメントを作成します。これをRで試したところ、うまくいくようです。

例えば。

'''
This is a comment
This is a second comment
'''