Как исправить в r: замена имеет нулевую длину


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

 Error in x[1] = x[0]: replacement has length zero

Эта ошибка возникает, когда вы пытаетесь заменить значение в векторе другим значением, которое «имеет нулевую длину», то есть оно не существует.

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

Как воспроизвести ошибку

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

 data = c(1, 4, 5, 5, 7, 9, 12, 14, 15, 17)

Теперь предположим, что мы пытаемся использовать следующий цикл for() для умножения каждого значения в векторе на значение перед ним:

 for (i in 1: length (data)) {
  data[i] = data[i] * data[i-1]
}

Error in data[i] <- data[i] * data[i - 1]: replacement has length zero

Мы получаем ошибку « замена имеет нулевую длину », потому что в первом цикле мы пытаемся выполнить следующее умножение:

  • данные[1] * данные[0]

Поскольку индексы R начинаются с 1, значения data[0] просто не существует.

Мы можем проверить это, попытавшись напечатать значение, расположенное в позиции 0 в векторе:

 print (data[0])

numeric(0)

Результатом является цифровой вектор длины 0 – другими словами, он не существует.

Как исправить ошибку

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

В нашем примере мы могли бы исправить эту ошибку, запустив цикл for с позиции индекса 2, а не с позиции 1:

 for (i in 2: length (data)) {
  data[i] = data[i] * data[i-1]
}

#view updated vector
data

 [1] 1 4 20 100 700 6300 75600
 [8] 1058400 15876000 269892000

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

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

В следующих руководствах объясняется, как исправить другие распространенные ошибки в R:

Как исправить: длина условия > 1 и будет использоваться только первый элемент
Как исправить: Заменить содержит X строк, в данных — Y
Как исправить: нечисловой аргумент бинарного оператора
Как исправить: dim(X) должен иметь положительную длину
Как исправить: ошибка при выборе неиспользуемых аргументов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *