Как исправить в r: аргумент имеет нулевую длину
Сообщение об ошибке, с которым вы можете столкнуться при использовании R:
Error in if (x < 10) {: argument is of length zero
Эта ошибка обычно возникает, когда вы пытаетесь выполнить логическое сравнение в операторе if в R, но переменная, которую вы используете в сравнении, имеет нулевую длину.
Двумя примерами переменных нулевой длины являются numeric() или Character(0) .
В следующем примере показано, как устранить эту ошибку на практике.
Как воспроизвести ошибку
Предположим, мы создаем следующую числовую переменную в R нулевой длины:
#create numeric variable with length of zero
x <- numeric()
Теперь предположим, что мы пытаемся использовать эту переменную в операторе if:
#if x is less than 10, print x to console
if(x < 10 ) {
x
}
Error in if (x < 10) {: argument is of length zero
Мы получаем ошибку, поскольку определяемая нами переменная имеет нулевую длину.
Если бы мы просто создали числовую переменную с реальным значением, мы бы никогда не получили эту ошибку при использовании оператора if:
#create numeric variable
y <- 5
#if y is less than 10, print y to console
if(y < 10 ) {
y
}
[1] 5
Как избежать ошибки
Чтобы избежать ошибки нулевой длины аргумента , нам нужно включить функцию isTRUE , которая использует следующую логику:
is. logical (x) && length(x) == 1 && !is. na (x) && x
Если мы используем эту функцию в операторе if, мы не получим ошибку при сравнении нашей переменной со значением:
if(isTRUE(x) && x < 10 ) {
x
}
Вместо получения ошибки мы просто не получаем никакого вывода, поскольку функция isTRUE(x) оценивает значение FALSE , что означает, что значение x никогда не выводится.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в R:
Как исправить в R: аргументы содержат разное количество строк
Как исправить в R: ошибка выбора неиспользуемых аргументов
Как восстановить в R: замена имеет нулевую длину