정수 시퀀스
이전 연습 문제에서 작성한 함수들은 계산을 수행한 뒤 하나의 숫자만 반환했어요. 벡터를 반환하는 함수도 작성할 수 있습니다.
벡터를 생성하는 문법은 벡터의 타입을 지정하고, 변수 이름을 쓴 다음, 괄호 안에 벡터의 원소 개수를 넣는 방식입니다. 예를 들어, 10개의 원소를 담는 numbers라는 이름의 숫자형 벡터를 만들려면 다음과 같이 작성합니다.
NumericVector numbers(10);
이 연습은 강의의 일부입니다
Rcpp로 R 코드 최적화하기
연습 안내
- 두 정수
lo와hi를 받아 그 사이의 숫자들을 담은IntegerVector를 반환하는 함수seq_cpp()의 정의를 완성하세요.- 반환형을
IntegerVector로 설정하세요. - 크기가
n인 새 정수 벡터sequence를 만드세요. for루프 안에서sequence의 i번째 원소를lo에i를 더한 값으로 설정하세요.- 마지막에
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))
*/