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