시작하기무료로 시작하기

정수 시퀀스

이전 연습 문제에서 작성한 함수들은 계산을 수행한 뒤 하나의 숫자만 반환했어요. 벡터를 반환하는 함수도 작성할 수 있습니다.

벡터를 생성하는 문법은 벡터의 타입을 지정하고, 변수 이름을 쓴 다음, 괄호 안에 벡터의 원소 개수를 넣는 방식입니다. 예를 들어, 10개의 원소를 담는 numbers라는 이름의 숫자형 벡터를 만들려면 다음과 같이 작성합니다.

NumericVector numbers(10);

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

Rcpp로 R 코드 최적화하기

강의 보기

연습 안내

  • 두 정수 lohi를 받아 그 사이의 숫자들을 담은 IntegerVector를 반환하는 함수 seq_cpp()의 정의를 완성하세요.
    • 반환형을 IntegerVector로 설정하세요.
    • 크기가 n인 새 정수 벡터 sequence를 만드세요.
    • for 루프 안에서 sequence의 i번째 원소를 loi를 더한 값으로 설정하세요.
    • 마지막에 sequence를 반환하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

#include 
using namespace Rcpp;

// Set the return type to IntegerVector
// [[Rcpp::export]]
___ seq_cpp(int lo, int hi) {
  int n = hi - lo + 1;
    
  // Create a new integer vector, sequence, of size n
  ___;
    
  for(int i = 0; i < n; i++) {
    // Set the ith element of sequence to lo plus i
    ___;
  }
  
  return ___;
}

/*** R
lo <- -2
hi <- 5
seq_cpp(lo, hi)
# Does it give the same answer as R's seq() function?
all.equal(seq_cpp(lo, hi), seq(lo, hi))
*/
코드 편집 및 실행