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

Gustavo du Mortier 2024年2月16日
  1. 任意のテキストを挿入するには scan() を使用する
  2. R でマルチラインをコメントする関数を使用する
R のマルチラインをコメントアウト

R のコードを複数行コメントアウトしたい場合、従来の方法では、コメントアウトする必要がある各行の先頭に # 文字を置くことになりますが、R は複数行コメントをサポートしていません。

コメントアウトするコードの行数が少ない場合は、このタスクを実行しても構いません。しかし、非常に長いコードブロックをコメントアウトする必要がある場合は、選択されたブロックの各行に # 文字を追加できる専用のコードエディタが便利です。RStudio では、Windows では Ctrl+Shift+C キーの組み合わせ、OSX では Command+Shift+C キーの組み合わせを使用することでこれを行うことができます。キーボードショートカットについては、RStudio ドキュメント に詳細が記載されています。

Notepad++ は R コードを認識し、Ctrl+Q または Command+Q ショートカットでコードをコメントアウトすることができます。Emacs を使っている場合は、M-x comment-region を使用することもできます。動作を元に戻すには、M-x uncomment region を使用します。

任意のテキストを挿入するには scan() を使用する

また、scan() 関数を用いてコード内に任意のテキストを挿入し、その後 rm() を用いてメモリからテキストを削除することもできます。rm() の前のコメントされたコードの最後の行が空白であることを確認してください。scan() はテキストを変数にロードするので、コメントされたコードやテキストを適度なサイズの範囲内に収める必要があります。

以下に、この方法を利用する方法を示します。

comments <- scan(what="character")
Place your comments here
You can place code also:
some_data <- 1:1000
Just leave the last line blank.

rm(comments)

R でマルチラインをコメントする関数を使用する

次の FormatComment 関数はクリップボードからテキストを取り出し、各行の先頭に # 記号を付けてフォーマットします。ですから、コードブロックを自動的にコメントアウトできないテキストエディタを使っている場合は、コードをクリップボードにコピーし、コンソールから FormatComment 関数を呼び出してコメントアウトされたコードを取得することで、同じ結果を得ることができます。そうすれば、元のコードブロックをコメントアウトされたものに置き換えることができます。

FormatComment<-function() {
    y <- as.list(readClipboard())
    spacer <- function(x) paste("#", paste("   ", collapse=""), x, sep="")
    z <- sapply(y, spacer)
    zz <- as.matrix(as.data.frame(z))
    dimnames(zz) <- list(c(rep("", nrow(zz))), c(""))
    writeClipboard(noquote(zz), format = 1)
    return(noquote(zz))
}

試してみるには、コメントとして含めたいテキストをコピーして FormatComment 関数を呼び出すだけです。例えば、このテキストをコメントに変換したいとします。

This is some text
I want to insert
as a comment
in the middle of
my R script.

ブロック全体を選択してクリップボードにコピーします。そして、このように FormatComment 関数を呼び出します。

FormatComment()

そして、次の出力が得られます。

#   This is some text
#   I want to insert 
#   as a comment     
#   in the middle of 
#   my R script.