Code Fix

上級 › Reduce に init を渡さず空ベクトルを渡すと NULL が返り後続処理でエラーになる › パターン3

Reduce に init を渡さず空ベクトルを渡すと NULL が返り後続処理でエラーになる

Reduce(f, x)はinitを省略した状態でxが空ベクトルだと、畳み込みを始める最初の値が無いためエラーにはならずNULLを返します。

 1  items <- numeric(0)
 2  count <- Reduce(function(a, b) a + b, items___)
                                                ^
 3  if (count >= 1) {
 4    cat("has items\n")
 5  } else {
 6    cat("empty\n")
 7  }
Error in if (count >= 1) { : argument is of length zero

空欄を埋めて実行を通す

広告
広告スロット(未設定)

Reduce に init を渡さず空ベクトルを渡すと NULL が返り後続処理でエラーになる

そのNULLをif()の条件などにそのまま使うと、そこで初めて「argument is of length zero」というエラーになります。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)