MulaiMulai sekarang secara gratis

Rata-rata tertimbang (versi C++)

Saatnya mempraktikkan keterampilan Anda dengan membuat sebuah fungsi untuk menghitung rata-rata tertimbang dari sebuah vektor.

Diberikan vektor numerik berisi nilai data, x, dan vektor numerik lain berisi bobot, w, rata-rata tertimbang adalah jumlah dari nilai data dikali bobot dibagi jumlah dari bobot. Perhatikan bahwa x dan w harus memiliki jumlah elemen yang sama.

Di R, perhitungan ini dilakukan dengan weighted.mean(), yang menghitung sum(x * w) / sum(w).

Latihan ini adalah bagian dari kursus

Mengoptimalkan Kode R dengan Rcpp

Lihat Kursus

Petunjuk latihan

  • Lengkapi definisi fungsi weighted_mean_cpp().
    • Inisialisasi total_xw dan total_w ke nol, serta n ke ukuran x.
    • Tentukan argumen untuk perulangan for, dengan bilangan bulat i sebagai pencacah.
    • Di dalam perulangan, tambahkan bobot ke-i ke total_w dan nilai data ke-i dikalikan bobot ke-i ke total_xw.
    • Kembalikan total hasil kali dibagi total bobot.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

#include 
using namespace Rcpp;

// [[Rcpp::export]]
double weighted_mean_cpp(NumericVector x, NumericVector w) {
  // Initialize these to zero
  double total_w = ___;
  double total_xw = ___;
  
  // Set n to the size of x
  int n = ___;
  
  // Specify the for loop arguments
  for(int i = 0; ___) {
    // Add ith weight
    total_w += ___;
    // Add the ith data value times the ith weight
    total_xw ___;
  }
  
  // Return the total product divided by the total weight
  return ___;
}

/*** R 
x <- c(0, 1, 3, 6, 2, 7, 13, 20, 12, 21, 11)
w <- 1 / seq_along(x)
weighted_mean_cpp(x, w)
# Does the function give the same results as R's weighted.mean() function?
all.equal(weighted_mean_cpp(x, w), weighted.mean(x, w))
*/
Edit dan Jalankan Kode