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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *