お恥ずかしいことながら,私自身,前に一度はまったことを,またやっちゃったので,3 度目はないようにと,自戒の意味を込めて。
関数で,途中で関数を抜ける,しかも特に何の戻り値も持たずにという場合には,引数を持たない return は使っちゃいけないよということ。
foo <- function(bar, baz) {
if (bar < 0) {
return
} else {
:
}
}
これは,ダメ。return は 関数なので,引数を持たないで return なんて書くと,return の定義そのものが戻り値になる。従って,「関数から戻る」なんてことは,期待できない。文法エラーにもならず気づかないので,最大限の注意が必要。
書くならば return() とか return(NULL) とか,とにかく,引数を明示的に書くべし。
※コメント投稿者のブログIDはブログ作成者のみに通知されます