1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Tối ưu hóa mã R với Rcpp

Connected

Bài tập

Tạo vector với các giá trị cho trước

Thay vì khai báo một vector rồi mới gán giá trị cho từng phần tử, bạn có thể tạo vector và chỉ định giá trị ngay trong một dòng mã bằng ::create(). Đây là một hàm thành viên tĩnh (static member function), tức là phương thức của chính kiểu vector, không phải của một biến vector cụ thể. Bạn có thể chỉ định tối đa 20 phần tử bằng create. (Với vector dài hơn, bạn cần dùng nhiều dòng mã.)

Đoạn mã sau tạo một numeric vector, important_numbers, chứa pi, e, và vô cực.

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

::create cũng có thể dùng để tạo các vector có tên. Cú pháp đặt tên phần tử là _["name"] = value. Dưới đây là cùng đoạn mã, lần này có đặt tên cho các phần tử.

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

Giống như trong R, nếu bạn muốn kết hợp các biến có kiểu khác nhau vào một biến khác, hãy dùng list. Trong Rcpp, kiểu này được viết hoa: đó là List.

Hướng dẫn

100 XP
  • Hoàn thiện định nghĩa hàm create_vectors() để tạo một số vector.
    • Tạo một character vector không có tên, polygons, chứa lần lượt các giá trị "triangle", "square", và "pentagon".
    • Tạo một integer vector có tên, mersenne_primes, chứa lần lượt các giá trị 3, 7, và 31. Các tên tương ứng là "first", "second", và "third".
    • Tạo một list có tên, both, chứa lần lượt polygons và mersenne_primes. Tên phần tử cũng là polygons và mersenne_primes.