HOWTO · R

R のマルチラインをコメントアウト

この記事では、R でマルチラインをコメントアウトする方法を学びます。

このページの内容

Rには複数行コメントの構文がありません。#から始まるコメントは、その行の末尾まで続きます。複数行を一時的に無効にするには、各行の先頭に#を付けます。コードに戻すときは、その接頭辞を削除します。エディターを使えば、選択した複数行にまとめて操作できます。

次の例を実行します。

このセクションのコードと表示されるラベルや出力は英語のままです。

# This line is a comment.
total <- 2 + 3
print(total)
[1] 5

最初の行はRコードとして無視されます。代入文とprint()の呼び出しは実行できます。提示された実行は正常に完了し、[1] 5と出力されました。

Rのコメントの仕組み

コメント記号は、現在の行の残りの部分にだけ適用されます。たとえば、answer <- 42 # keep this valueでは、Rは代入を評価し、#以降のテキストを無視します。行頭が#の行を使ってコードを説明しても、スクリプトの動作は変わりません。コメントは改行で終わるため、コメント行が複数続いていても、それぞれ独立した行コメントであり、ひとまとまりのブロックコメントではありません。

コードをコメントアウトするときは、選択範囲内のすべての行に、継続行も含めて接頭辞を付けます。実行可能な行が1行でもコメントアウトされずに残っていれば、スクリプトを読み込んだときにその行は実行されます。コメント解除はその逆で、再び実行したい各行からコメント接頭辞を削除します。

エディターでコードブロックをコメントアウトする

RStudioで対象の行を選択し、WindowsではCtrl+Shift+C、macOSではCommand+Shift+Cを押します。同じコマンドで選択範囲のコメントを切り替えるため、実行前に結果を確認してください。エディターでの操作については、RStudioのキーボードショートカットを参照してください。

WindowsのNotepad++では、Ctrl+Qで選択した行のコメントを切り替えられます。EmacsではM-x comment-regionを実行し、元に戻すにはM-x uncomment-regionを実行します。ショートカットはエディター、OS、キーマップ、選択範囲によって異なるため、キー操作が違う場合はエディターのコマンド一覧を確認してください。これらのコマンドは行の接頭辞を追加または削除するもので、新しいRのコメント構文を追加するものではありません。

scan()で複数行コメントを作成できない理由

scan()は、接続または入力から値を読み取り、Rに返します。ソースファイルにテキストを挿入したり、入力した行をコメントに変えたりする関数ではありません。同様に、rm()はワークスペースからRオブジェクトを削除しますが、ソーステキストを消去するものではありません。Rコンソールに任意の文章を入力しても、スクリプトをコメントアウトしたことにはなりません。Rは送信された各行を入力として解析しようとします。代わりに、エディターのコメントコマンドを使うか、ソースの各行に#を付けてください。

クリップボードのテキストを#コメントに変換するRヘルパー

エディターに便利な選択範囲コマンドがない場合は、任意のFormatCommentヘルパーを使って、クリップボード内の各行の先頭に#と空白を付けられます。このヘルパーのreadClipboard()とwriteClipboard()の呼び出しはWindows専用です。Windows上のRセッションで関数を定義し、プレーンテキストまたはコードをコピーしてから呼び出します。スクリプトの内容を置き換える前に、結果を確認してください。整形したテキストはクリップボードに書き戻されます。元の内容を残したい場合は、先に安全な場所へ貼り付けてください。

このセクションのコードと表示されるラベルや出力は英語のままです。

FormatComment <- function() {
  lines <- readClipboard()
  commented <- paste0("#   ", lines)
  writeClipboard(commented, format = 1)
  invisible(commented)
}

提示されたヘルパーの実行例は正常に完了し、出力は報告されていません。この結果から、実際のWindowsクリップボードや対話セッションでの動作まで確認できたわけではありません。このヘルパーはコピーしたテキスト行を対象としています。特に元のコードにインデントや継続構文がある場合は、貼り付けた結果を確認してください。通常のコード編集では、エディターのコメント切り替え機能のほうが元に戻しやすく、書式も崩れにくいでしょう。