시작하기무료로 시작하기

double 벡터의 합

C++에서는 보통 루프가 R보다 훨씬 빠르게 실행되므로, 루프를 작성하는 능력이 중요합니다. NumericVector의 값을 모두 더하는 함수부터 시작해 보죠. 이는 2장 연습 문제 10과 이 장의 이전 연습 문제에서 배운 내용을 다시 확인하는 것입니다.

이 연습은 강의의 일부입니다

Rcpp로 R 코드 최적화하기

강의 보기

연습 안내

  • NumericVector의 원소를 순회하며 합계를 반환하는 함수 sum_cpp의 정의를 완성하세요.
    • nxsize()로 설정하세요.
    • result를 0으로 초기화하세요.
    • for 루프의 인수를 지정하세요. i0으로 초기화하고, 반복 조건을 in보다 작을 때로 설정한 뒤, 각 단계에서 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))
*/
코드 편집 및 실행