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