MulaiMulai sekarang secara gratis

Jumlahkan vektor double

Karena perulangan umumnya berjalan jauh lebih cepat di C++ daripada di R, menulis perulangan merupakan keterampilan penting. Mari mulai dengan sebuah fungsi yang menjumlahkan nilai dari NumericVector. Ini mengulas kembali keterampilan yang Anda pelajari di Bab 2 Latihan 10, dan latihan sebelumnya di bab ini.

Latihan ini adalah bagian dari kursus

Mengoptimalkan Kode R dengan Rcpp

Lihat Kursus

Petunjuk latihan

  • Lengkapi definisi fungsi sum_cpp yang melakukan perulangan atas elemen NumericVector dan mengembalikan jumlahnya.
    • Setel n sebagai size() dari x.
    • Inisialisasi result ke nol.
    • Tentukan argumen perulangan for. Inisialisasi i ke 0, tetapkan kondisi iterasi sebagai i lebih kecil dari n, dan tingkatkan i satu per satu pada setiap langkah.
    • Pada setiap iterasi, tambahkan elemen ke-i dari x ke result.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

#include 
using namespace Rcpp;

// [[Rcpp::export]]
double sum_cpp(NumericVector x) {
  // The size of x
  int n = ___;
  // Initialize the result
  double result = ___;
  // Complete the loop specification
  for(int i = 0; ___; ___) {
    // Add the next value
    result = result + ___;
  }
  return result;
}

/*** R
set.seed(42)
x <- rnorm(1e6)
sum_cpp(x)
# Does the function give the same answer as R's sum() function?
all.equal(sum_cpp(x), sum(x))
*/
Edit dan Jalankan Kode