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