R'de nasıl onarılır: sınırların dışında dizin


R’de karşılaşabileceğiniz yaygın bir hata:

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

Bu hata, var olmayan bir matrisin sütununa veya satırına erişmeye çalıştığınızda ortaya çıkar.

Bu eğitimde, aşağıdaki matrisi örnek olarak kullanarak bu hatayı çözmek için uygulayabileceğiniz tam adımlar gösterilmektedir:

 #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

Örnek 1: aralık dışında dizin (çizgilerle)

Aşağıdaki kod, matrisin mevcut olmayan 11. satırına erişmeye çalışır:

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

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

Matrisin 11. satırı bulunmadığından indeksin sınır dışı hatası alıyoruz.

Matriste kaç satır olduğunu bilmiyorsak, bulmak için nrow() işlevini kullanabiliriz:

 #display number of rows in matrix
nrow(x)

[1] 10

Matriste sadece 10 satırın olduğunu görebiliriz. Yani satırlara erişmek için yalnızca 10’dan küçük veya ona eşit sayıları kullanabiliriz.

Örneğin matrisin 10. satırını görüntülemek için aşağıdaki sözdizimini kullanabiliriz:

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

[1] 59 92 28

Örnek #2: aralık dışında dizin (sütunlarla)

Aşağıdaki kod, matrisin mevcut olmayan 4. sütununa erişmeye çalışır:

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

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

Matrisin 4. sütunu bulunmadığından indeksin sınır dışı hatası alıyoruz.

Matrisin kaç sütun içerdiğini bilmiyorsak, şunu bulmak için ncol() işlevini kullanabiliriz:

 #display number of columns in matrix
ncol(x)

[1] 3

Matriste sadece 3 sütunun olduğunu görüyoruz. Bu nedenle sütunlara erişmek için yalnızca 3’ten küçük veya ona eşit sayıları kullanabiliriz.

Örneğin matrisin 3. sütununu görüntülemek için aşağıdaki sözdizimini kullanabiliriz:

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

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

Örnek 3: aralık dışında dizin (satırlar ve sütunlar)

Aşağıdaki kod, matrisin mevcut olmayan 11. satırının ve 4. sütununun değerine erişmeye çalışır:

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

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

Matrisin ne 11. satırı ne de 4. sütunu bulunmadığından indeks sınır dışı hatası alıyoruz.

Matriste kaç satır ve sütun olduğunu bilmiyorsak, şunu bulmak için dim() işlevini kullanabiliriz:

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

[1] 10 3

Matriste sadece 10 satır ve 3 sütun bulunduğunu görüyoruz. Yani satır ve sütunlara erişirken yalnızca bu değerlerden küçük veya bu değerlere eşit sayıları kullanabiliriz.

Örneğin matrisin 10. satırında ve 3. sütununda yer alan değeri görüntülemek için aşağıdaki sözdizimini kullanabiliriz:

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

[1] 28

Ek kaynaklar

Aşağıdaki eğitimlerde R’deki diğer yaygın hataların nasıl çözüleceği açıklanmaktadır:

R’de nasıl düzeltilir: Adlar önceki adlarla eşleşmiyor
R’de nasıl düzeltilir: daha uzun bir nesnenin uzunluğu, daha kısa bir nesnenin uzunluğunun katı değildir
R’de nasıl düzeltilir: kontrastlar yalnızca 2 veya daha fazla seviyeye sahip faktörlere uygulanabilir

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir