Zacznij terazZacznij za darmo

Funkcje eksportowane i nieeksportowane

Funkcje opatrzone specjalnym komentarzem [[Rcpp::export]] stają się dostępne w konsoli R. Zazwyczaj jednak nie chcesz eksportować do R każdej funkcji. Niektóre z nich możesz zachować jako wewnętrzne funkcje C++ – są to często funkcje obliczeniowe niższego poziomu lub funkcje pomocnicze.

Przypomnij sobie funkcję obliczającą odległość punktu w przestrzeni 2D od początku układu współrzędnych:

double dist( double x, double y) {
  return sqrt( x*x + y*y ) ;
}

W tym ćwiczeniu zaktualizujesz kod tak, aby funkcja dist (eksportowana) wywoływała nieeksportowaną funkcję square, która po prostu podnosi wartość typu double do kwadratu.

To ćwiczenie jest częścią kursu

Optymalizacja kodu R za pomocą Rcpp

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij definicję funkcji square() tak, aby przyjmowała i zwracała wartość typu double, …
  • równą iloczynowi x razy x.
  • Zaktualizuj definicję funkcji dist(), aby korzystała z square() – tzn. zwracała pierwiastek kwadratowy z sumy kwadratu x i kwadratu y.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

#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(___ + ___);
}
Edytuj i uruchom kod