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