上級 › 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を明示的に渡しておかないと後続のif判定がエラーで止まります。
次の問題