시작하기무료로 시작하기

주어진 값으로 벡터 생성하기

벡터를 먼저 정의한 뒤 요소를 나중에 채우는 대신, ::create()를 사용하면 한 줄의 코드로 벡터를 생성하면서 값까지 지정할 수 있어요. 이는 벡터 변수의 메서드가 아니라 벡터 타입 자체의 메서드인, 정적 멤버 함수입니다. create로 최대 20개의 요소까지 지정할 수 있어요. (더 긴 벡터는 여러 줄의 코드로 작성해야 합니다.)

다음 코드는 원주율, e, 무한대를 포함하는 숫자 벡터 important_numbers를 생성합니다.

NumericVector numbers = NumericVector::create(PI, exp(1), INFINITY);

::create는 이름이 있는 벡터를 만들 때도 사용할 수 있습니다. 요소에 이름을 붙이는 문법은 _["name"] = value입니다. 아래는 같은 코드를 요소에 이름을 붙여 다시 작성한 예시입니다.

NumericVector numbers = NumericVector::create(_["pi"] = PI, _["e"] = exp(1), _["inf"] = INFINITY);

R과 마찬가지로, 서로 다른 타입의 변수를 하나로 묶고 싶다면 리스트를 사용합니다. Rcpp에서는 타입 이름이 대문자로 시작하며, List를 사용합니다.

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

Rcpp로 R 코드 최적화하기

강의 보기

연습 안내

  • 여러 벡터를 생성하는 함수 create_vectors()의 정의를 완성하세요.
    • 이름이 없는 문자 벡터 polygons를 생성하고, 값은 순서대로 "triangle", "square", "pentagon"으로 하세요.
    • 이름이 있는 정수 벡터 mersenne_primes를 생성하고, 값은 순서대로 3, 7, 31로 하세요. 이름은 각각 "first", "second", "third"로 하세요.
    • 이름이 있는 리스트 both를 생성하고, polygonsmersenne_primes를 그 순서대로 포함하세요. 이름도 각각 polygonsmersenne_primes로 하세요.

실습형 인터랙티브 연습

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

#include 
using namespace Rcpp;

// [[Rcpp::export]]
List create_vectors() {
  // Create an unnamed character vector
  CharacterVector polygons = CharacterVector::___("___", "___", "___");
  // Create a named integer vector
  IntegerVector mersenne_primes = ___(_["___"] = ___, ___, ___);
  // Create a named list
  List both = ___(___, ___);
  return both;
}

/*** R
create_vectors()
*/
코드 편집 및 실행