Code Fix

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

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

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

 1  fees <- numeric(0)
 2  total <- Reduce(function(a, b) a + b, fees___)
                                               ^
 3  if (total != 0) {
 4    cat("charged\n")
 5  } else {
 6    cat("free\n")
 7  }
Error in if (total != 0) { : argument is of length zero

空欄を埋めて実行を通す

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

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

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

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

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