117

私は(ある程度)この質問に対する答えをすでに知っています。しかし、これは R ユーザーのリストで頻繁に聞かれる質問なので、確かな答えが 1 つあるはずだと思いました。 私の知る限り、R には複数行のコメント機能はありません。

通常、R でのかなりの作業には対話型のセッションが含まれますが (複数行のコメントが必要かどうかは疑問です)、同僚やクラスメートにスクリプトを送信しなければならない場合があり、その多くは重要なコード ブロックを含みます。そして、他の言語から来た人々にとって、それはかなり自然な質問です.

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

"
Here's my multiline comment.

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

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

4

11 に答える 11

54

これはかなり定期的にメーリング リストに出てきます。たとえば、r-help のこの最近のスレッドを参照してください。通常、コンセンサスの答えは上に示したものです。その言語には直接的なサポートがないため、次のいずれかを行う必要があります。

  • 領域からコメントへのコマンドを備えたエディターで作業し、ほとんどの高度な R エディターで作業します。
  • 以前に提案された構成を使用しますが、if (FALSE)それでも完全な解析が必要であり、したがって構文的に正しい必要があることに注意してください
于 2009-08-05T13:09:36.707 に答える
44

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

于 2013-06-04T09:42:32.880 に答える
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 または単純なエディターには、単純なコメントアウトされたブロック内のテキストの強調表示がありません。ただし、一部の作成者はヒア文字列内での解析を確実にするために時間を割いています。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!"

そして、これが写真です...

構造化コメント

于 2012-11-22T01:31:04.893 に答える
12

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

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

}
于 2009-08-05T11:17:04.837 に答える
9

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

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

anything="
first comment line
second comment line
"
于 2012-11-04T09:46:05.097 に答える
7

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

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

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

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

于 2013-12-13T06:39:57.460 に答える
2

R スクリプトの編集には vim を使用します。

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

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

Vim でコメントを削除するには、削除したい文字 "#" の上にある最初の行から始めて、もう一度 "Control-V" を実行し、"#" を削除したい最後の行まで矢印を下に向けます。次に、「dd」と入力します。「#」記号は削除する必要があります。

Vim での test.R への変更が Rstudio に反映されるまでには、数秒のタイムラグがあります。

于 2015-09-27T17:43:26.637 に答える