W tym przykładzie wykonujemy podstawianie element po elemencie do macierzy na podstawie testu if / else. Najpierw generowana jest macierz x dwa na pięć i wyświetlana jest macierz. Następnie dwie pętle for przechodzą przez indeksy wierszy i kolumn x. W każdym cyklu zestaw instrukcji if / else sprawdza, czy element macierzy jest większy niż pięć. Jeśli wartość elementu jest większa niż pięć, wartość elementu jest zastępowana jedynką. Jeśli nie, kontrola przechodzi do instrukcji else. W instrukcji else wartość elementu jest zastępowana przez zero. Na koniec wyświetlana jest wynikowa macierz. Oto przykład:
> x = matrix(1:10,2,5)
> x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
> for (i in 1:2) {
+ for (j in 1:5) {
+ if ( x[i,j]>5 ) x[i,j]=1
+ else x[i,j]=0
+ }
+ }
> x
[,1] [,2] [,3] [,4] [,5]
[1,] 0 0 0 1 1
[2,] 0 0 1 1 1
Korzystanie z indeksów
Wykonanie tej samej zamiany bez pętli jest łatwiejsze. Najpierw generowana i wyświetlana jest macierz x. Następnie druga macierz, y, jest równa x. Macierz y służy do przechowywania wartości x, ponieważ wartości x zmieniane są w dwóch krokach. Następnie elementy w x są ustawiane jako równe nowym wartościom na podstawie oryginalnych wartości, które są w y. Ostatni wynik wyświetlony jest matryca. Oto przykład:
> x = matrix(1:10,2,5)
> x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
> y=x
> x[y>5] = 1
> x[y<=5] = 0
> x
[,1] [,2] [,3] [,4] [,5]
[1,] 0 0 0 1 1
[2,] 0 0 1 1 1
Na moim komputerze, przy użyciu macierzy z 43 830 wierszami i 35 kolumnami, metoda zapętlania zajęła około pięciu sekund, a metoda indeksowania mniej niż sekundę