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
Petunjuk latihan
- Lengkapi definisi fungsi
sum_cppyang melakukan perulangan atas elemenNumericVectordan mengembalikan jumlahnya.- Setel
nsebagaisize()darix. - Inisialisasi
resultke nol. - Tentukan argumen perulangan
for. Inisialisasiike0, tetapkan kondisi iterasi sebagaiilebih kecil darin, dan tingkatkanisatu per satu pada setiap langkah. - Pada setiap iterasi, tambahkan elemen ke-i dari
xkeresult.
- Setel
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))
*/