double 벡터의 합
C++에서는 보통 루프가 R보다 훨씬 빠르게 실행되므로, 루프를 작성하는 능력이 중요합니다. NumericVector의 값을 모두 더하는 함수부터 시작해 보죠. 이는 2장 연습 문제 10과 이 장의 이전 연습 문제에서 배운 내용을 다시 확인하는 것입니다.
이 연습은 강의의 일부입니다
Rcpp로 R 코드 최적화하기
연습 안내
NumericVector의 원소를 순회하며 합계를 반환하는 함수sum_cpp의 정의를 완성하세요.n을x의size()로 설정하세요.result를 0으로 초기화하세요.for루프의 인수를 지정하세요.i를0으로 초기화하고, 반복 조건을i가n보다 작을 때로 설정한 뒤, 각 단계에서i를 1씩 증가시키세요.- 각 반복에서
x의 i번째 원소를result에 더하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
#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))
*/