Как исправить в R: неправильное количество индексов в матрице


Одна ошибка, с которой вы можете столкнуться в R:

Error in x[i, ] <- 0 : incorrect number of subscripts on matrix

Эта ошибка возникает, когда вы пытаетесь присвоить какое-либо значение позиции в векторе, но случайно включаете запятую, как если бы вы присваивали какое-то значение позиции строки и столбца в матрице.

В этом руководстве рассказывается, как именно исправить эту ошибку.

Пример 1. Исправление ошибки для одного значения

Предположим, у нас есть следующий вектор в R с 5 значениями:

#define vector
x <- c(4, 6, 7, 7, 15)

Теперь предположим, что мы пытаемся присвоить значение «22» третьему элементу вектора:

#attempt to assign the value '22' to element in third position
x[3, ] <- 22

Error in x[3, ] <- 22 : incorrect number of subscripts on matrix

Мы получаем ошибку, потому что мы поставили запятую при попытке присвоить новое значение.

Вместо этого нам просто нужно удалить запятую:

assign the value '22' to element in third position
x[3] <- 22

#display updated vector
x

[1] 4 6 22 7 15

Пример 2. Исправление ошибки в цикле for

Эта ошибка также может возникнуть, когда мы пытаемся заменить несколько значений в векторе с помощью цикла for.

Например, следующий код пытается заменить каждое значение в векторе нулем:

#define vector
x <- c(4, 6, 7, 7, 15)

#attempt to replace every value in vector with zero
for (i in 1:length(x)) {
 x[i, ]=0
 }

Error in x[i, ] = 0 : incorrect number of subscripts on matrix

Мы получаем ошибку, потому что мы поставили запятую при попытке присвоить нули.

Вместо этого нам просто нужно удалить запятую:

#define vector
x <- c(4, 6, 7, 7, 15)

#replace every value in vector with zero
for (i in 1:length(x)) {
 x[i]=0
 }

#view updated vector
x

[1] 0 0 0 0 0

Как только мы удалим запятую, код запустится без ошибок.

Дополнительные ресурсы

Как исправить в R: NA, представленные Coercion
Как исправить в R: нижний индекс выходит за пределы
Как исправить ошибку в R: неправильное количество измерений

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.