Як виправити в 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: заміна має нульову довжину