1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Tối ưu hóa mã R với Rcpp

Connected

Bài tập

Xử lý giá trị thiếu

Trong R, để kiểm tra một giá trị thiếu bạn phải dùng is.na(x). (Điều gì xảy ra nếu bạn thử x == NA?)

Tương đương trong Rcpp là phương thức tĩnh is_na(). Hãy nhớ rằng "tĩnh" nghĩa là phương thức thuộc về lớp, không phải một biến cụ thể. Ví dụ, NumericVector::is_na(x) kiểm tra xem double x có phải là giá trị thiếu hay không.
Tương tự, phương thức tĩnh get_na() trả về giá trị NA cho lớp tương ứng. Ví dụ, CharacterVector::get_na() trả về một giá trị ký tự thiếu.

Lưu ý rằng toán tử logic "hoặc" trong C++ giống như trong R, ||.

Hướng dẫn

100 XP
  • Cập nhật hàm weighted_mean_cpp() từ bài trước để hàm trả về giá trị thiếu ngay khi thấy giá trị thiếu ở x hoặc w.
    • Thêm một khối if kiểm tra liệu phần tử thứ i của x là NA hoặc phần tử thứ i của w là NA.
    • Bên trong khối if đó, trả về một NA kiểu số.