上級 › Reduce に init を渡さず空ベクトルを渡すと NULL が返り後続処理でエラーになる › パターン1
Reduce に init を渡さず空ベクトルを渡すと NULL が返り後続処理でエラーになる
Reduce(f, x)はinitを省略した状態でxが空ベクトルだと、畳み込みを始める最初の値が無いためエラーにはならずNULLを返します。
1 values <- numeric(0) 2 total <- Reduce(function(a, b) a + b, values___) ^ 3 if (total > 5) { 4 cat("big\n") 5 } else { 6 cat("small\n") 7 }
Error in if (total > 5) { : argument is of length zero
空欄を埋めて実行を通す
initを省略した状態でvaluesが空だとReduceはNULLを返し、if(total > 5)がNULLを判定できずエラーになります。initに0を渡しておけば空の場合でも数値として扱えます。
次の問題