Sekwencja liczb całkowitych
Funkcje napisane w poprzednich ćwiczeniach wykonywały obliczenia i zwracały pojedynczą liczbę. Możesz też pisać funkcje, które zwracają wektor.
Aby utworzyć wektor określonego typu, podaj typ wektora, następnie nazwę zmiennej, a na końcu – w nawiasach – liczbę elementów. Na przykład, aby utworzyć wektor liczbowy numbers zawierający 10 elementów, użyj poniższego kodu.
NumericVector numbers(10);
To ćwiczenie jest częścią kursu
Optymalizacja kodu R za pomocą Rcpp
Instrukcje do ćwiczenia
- Uzupełnij definicję funkcji
seq_cpp(), która przyjmuje dwie liczby całkowiteloihii zwracaIntegerVectorz liczbami z tego zakresu.- Ustaw typ zwracany na
IntegerVector. - Utwórz nowy wektor liczb całkowitych
sequenceo rozmiarzen. - Wewnątrz pętli
forprzypisz i-temu elementowisequencewartośćloplusi. - Zwróć
sequence.
- Ustaw typ zwracany na
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
#include
using namespace Rcpp;
// Set the return type to IntegerVector
// [[Rcpp::export]]
___ seq_cpp(int lo, int hi) {
int n = hi - lo + 1;
// Create a new integer vector, sequence, of size n
___;
for(int i = 0; i < n; i++) {
// Set the ith element of sequence to lo plus i
___;
}
return ___;
}
/*** R
lo <- -2
hi <- 5
seq_cpp(lo, hi)
# Does it give the same answer as R's seq() function?
all.equal(seq_cpp(lo, hi), seq(lo, hi))
*/