Одна ошибка, с которой вы можете столкнуться в 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) должен иметь положительную длину
Как исправить: ошибка при выборе неиспользуемых аргументов