1. Learn
  2. /
  3. Courses
  4. /
  5. Rcpp で R コードを最適化する

Connected

Exercise

欠損値の扱い

R では、欠損値を判定するには is.na(x) を使います。(x == NA を試すとどうなるでしょうか?)

Rcpp での同等の機能は静的メソッド is_na() です。静的とは、そのメソッドが特定の変数ではなくクラスに属していることを意味します。たとえば、NumericVector::is_na(x) は double 型の x が欠損値かどうかを判定します。 同様に、静的メソッド get_na() は対応するクラスの NA を返します。たとえば、CharacterVector::get_na() は文字の欠損値を返します。

C++ の論理和は R と同じく || である点に注意してください。

Instructions

100 XP
  • 前の演習で作成した weighted_mean_cpp() 関数を更新し、x または w に欠損値が見つかった時点で、ただちに欠損値を返すようにします。
    • x の i 番目の要素が NA か、または w の i 番目の要素が NA かをチェックする if ブロックを追加します。
    • その if ブロックの中で、数値の NA を返します。