Code Fix

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

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

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

 1  weights <- numeric(0)
 2  total <- Reduce(function(a, b) a + b, weights___)
                                                  ^
 3  if (total > 100) {
 4    cat("heavy\n")
 5  } else {
 6    cat("light\n")
 7  }
Error in if (total > 100) { : argument is of length zero

空欄を埋めて実行を通す

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

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

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

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

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