1. Learn
  2. /
  3. Courses
  4. /
  5. Rcpp로 R 코드 최적화하기

Connected

Exercise

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

벡터를 먼저 정의한 뒤 요소를 나중에 채우는 대신, ::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를 사용합니다.

Instructions

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