Hàm xuất và không xuất
Các hàm được gắn chú thích đặc biệt [[Rcpp::export]] sẽ khả dụng trong R console. Tuy nhiên, bạn thường không muốn xuất mọi hàm sang R. Thay vào đó, một số hàm có thể được giữ nội bộ trong C++. Đây thường là các hàm tính toán cấp thấp hơn hoặc hàm tiện ích.
Hãy nhớ lại hàm tính khoảng cách từ một điểm trong không gian 2D đến gốc tọa độ:
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
Ở đây, bạn sẽ cập nhật mã sao cho hàm dist (được xuất) sẽ gọi một hàm square không xuất, chỉ đơn giản là bình phương một giá trị double.
Bài tập này là một phần của khóa học
Tối ưu hóa mã R với Rcpp
Hướng dẫn bài tập
- Hoàn thiện định nghĩa
square()để hàm nhận và trả về mộtdouble, … - bằng
xnhân vớix. - Cập nhật định nghĩa
dist()để dùngsquare(). Tức là, trả về căn bậc hai của tổng bình phương củaxvà bình phương củay.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
#include
using namespace Rcpp;
// Make square() accept and return a double
___ square(___ x) {
// Return x times x
return ___ ;
}
// [[Rcpp::export]]
double dist(double x, double y) {
// Change this to use square()
return sqrt(___ + ___);
}