Як виправити в r: умова має довжину > 1 і використовуватиметься лише перший елемент


Помилка, з якою ви можете зіткнутися в R:

 Warning message:
In if (x > 1) {:
  the condition has length > 1 and only the first element will be used 

Ця помилка виникає, коли ви намагаєтеся використати функцію if() для перевірки умови, але передаєте їй вектор замість окремих елементів.

Цей посібник пояснює, як саме виправити цю помилку.

Як відтворити помилку

Припустимо, ми маємо такий вектор в R:

 #define data
x <- c(2, 3, 1, 1, 5, 7)

Тепер припустімо, що ми спробуємо використати функцію if() , щоб перевірити, чи кожне значення вектора x більше за 1, а потім помножимо ці значення на 2:

 #if value in vector x is greater than 1, multiply it by 2
if (x>1) {
  x*2
}

Warning message:
In if (x > 1) {:
  the condition has length > 1 and only the first element will be used

Ми отримуємо попередження, оскільки ми передали вектор оператору if() .

Оператор if() може перевіряти лише один елемент вектора за раз, але за допомогою цього коду ми спробували перевірити кожен елемент вектора за раз.

Як виправити помилку

Найпростіший спосіб виправити цю помилку — використовувати замість неї функцію ifelse() :

 #if value in vector x is greater than 1, multiply it by 2
ifelse(x>1, x*2, x)

[1] 4 6 1 1 10 14

За замовчуванням функція ifelse() перевіряє кожен елемент вектора один за іншим. Це дозволяє нам уникнути помилки, з якою ми зіткнулися раніше.

Ось як функція ifelse() створює вихідні значення, які вона створила:

  • Перший елемент (2) був більшим за 1, тому ми помножили його на 2, щоб отримати 2*2 = 4
  • Другий елемент (3) був більшим за 1, тому ми помножили його на 2, щоб отримати 3*2 = 6
  • Третій елемент (1) не був більшим за 1, тому ми залишили його як є: 1
  • Четвертий елемент (1) не був більшим за 1, тому ми залишили його як є: 1

І так далі.

Пов’язане: Як написати вкладений цикл For у R

Додаткові ресурси

У наступних посібниках пояснюється, як вирішити інші поширені помилки в R:

Як виправити в R: NAs, введені примусово
Як виправити в R: dim(X) має мати позитивну довжину
Як виправити в R: імена не збігаються з попередніми іменами
Як виправити в R: довжина довшого об’єкта не кратна довжині коротшого об’єкта
Як виправити в R: контрасти можна застосовувати лише до факторів із 2 або більше рівнями

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

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