Jak naprawić w r: indeks poza zakresem


Typowym błędem, jaki możesz napotkać w R jest:

 Error in x[, 4]: subscript out of bounds

Ten błąd występuje, gdy próbujesz uzyskać dostęp do kolumny lub wiersza macierzy, która nie istnieje.

W tym samouczku przedstawiono dokładne kroki, które można wykonać, aby rozwiązać ten błąd, korzystając z poniższej macierzy jako przykładu:

 #make this example reproducible
set. seeds (0)

#create matrix with 10 rows and 3 columns
x = matrix(data = sample. int (100, 30), nrow = 10, ncol = 3)

#print matrix
print (x)

      [,1] [,2] [,3]
 [1,] 14 51 96
 [2,] 68 85 44
 [3,] 39 21 33
 [4,] 1 54 35
 [5,] 34 74 70
 [6,] 87 7 86
 [7,] 43 73 42
 [8,] 100 79 38
 [9,] 82 37 20
[10,] 59 92 28

Przykład nr 1: indeks poza zakresem (z liniami)

Poniższy kod próbuje uzyskać dostęp do 11. wiersza macierzy, który nie istnieje:

 #attempt to display 11th row of matrix
x[11, ]

Error in x[11, ]: subscript out of bounds

Ponieważ 11. wiersz macierzy nie istnieje, otrzymujemy błąd indeksu poza zakresem .

Jeśli nie wiemy, ile wierszy znajduje się w macierzy, możemy skorzystać z funkcji nrow() , aby się dowiedzieć:

 #display number of rows in matrix
nrow(x)

[1] 10

Widzimy, że w macierzy jest tylko 10 wierszy. Zatem w celu uzyskania dostępu do wierszy możemy używać tylko liczb mniejszych lub równych 10.

Na przykład możemy użyć następującej składni, aby wyświetlić 10. wiersz macierzy:

 #display 10th row of matrix
x[10, ]

[1] 59 92 28

Przykład nr 2: indeks poza zakresem (z kolumnami)

Poniższy kod próbuje uzyskać dostęp do czwartej kolumny macierzy, która nie istnieje:

 #attempt to display 4th column of matrix
x[, 4]

Error in x[, 4]: subscript out of bounds

Ponieważ czwarta kolumna macierzy nie istnieje, otrzymujemy błąd indeksu poza zakresem .

Jeśli nie wiemy, ile kolumn zawiera macierz, możemy użyć funkcji ncol() , aby dowiedzieć się:

 #display number of columns in matrix
ncol(x)

[1] 3

Widzimy, że w macierzy są tylko 3 kolumny. Dlatego w celu uzyskania dostępu do kolumn możemy używać tylko liczb mniejszych lub równych 3.

Na przykład możemy użyć następującej składni, aby wyświetlić trzecią kolumnę macierzy:

 #display 3rd column of matrix
x[, 3]

[1] 96 44 33 35 70 86 42 38 20 28

Przykład nr 3: indeks poza zakresem (wiersze i kolumny)

Poniższy kod próbuje uzyskać dostęp do wartości 11. wiersza i 4. kolumny macierzy, która nie istnieje:

 #attempt to display value in 11th row and 4th column
x[11, 4]

Error in x[11, 4]: subscript out of bounds

Ponieważ nie istnieje ani 11. wiersz, ani 4. kolumna macierzy, otrzymujemy błąd indeksu poza zakresem .

Jeśli nie wiemy, ile wierszy i kolumn znajduje się w macierzy, możemy użyć funkcji dim() , aby się dowiedzieć:

 #display number of rows and columns in matrix
dim(x)

[1] 10 3

Widzimy, że w macierzy jest tylko 10 wierszy i 3 kolumny. Dlatego podczas uzyskiwania dostępu do wierszy i kolumn możemy używać tylko liczb mniejszych lub równych tym wartościom.

Na przykład możemy zastosować następującą składnię, aby wyświetlić wartość w 10. wierszu i 3. kolumnie macierzy:

 #display value in 10th row and 3rd column of matrix
x[10, 3]

[1] 28

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak rozwiązać inne typowe błędy w języku R:

Jak naprawić w R: Nazwy nie pasują do poprzednich nazw
Jak naprawić w R: długość dłuższego obiektu nie jest wielokrotnością długości krótszego obiektu
Jak naprawić w R: kontrasty można zastosować tylko do czynników o 2 lub więcej poziomach

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *