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