上級 › 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
空欄を埋めて実行を通す
feesが空の可能性を考慮していないと、initを省略したReduceがNULLを返しif文でエラーになります。
次の問題