Як виправити в r: аргумент не є ні числовим, ні логічним: return na


Попередження, яке ви можете зустріти в R:

 Warning message:
In mean.default(df): argument is not numeric or logical: returning NA

Це попередження виникає під час спроби усереднити об’єкт у R, який не є ні числовим, ні логічним.

Цей підручник пояснює, як саме працювати з цим попередженням на практиці.

Як відтворити попередження

Припустимо, ми створюємо такий кадр даних у R:

 #create data frame
df <- data. frame (team=c('A', 'B', 'C', 'D', 'E'),
                 points=c(99, 90, 86, 88, 95),
                 assists=c(33, 28, 31, 39, 34),
                 rebounds=c(30, 28, 24, 24, 28))

#view data frame
df

  team points assists rebounds
1 A 99 33 30
2 B 90 28 28
3 C 86 31 24
4 D 88 39 24
5 E 95 34 28

Якщо ми спробуємо усереднити стовпець символів або якщо ми спробуємо усереднити весь кадр даних, ми отримаємо попередження:

 #attempt to calculate mean of character column
mean(df$team)

Warning message:
In mean.default(df$team): argument is not numeric or logical: returning NA

#attempt to calculate mean of entire data frame
mean(df)

Warning message:
In mean.default(df): argument is not numeric or logical: returning NA

Функція Mean() приймає лише числовий вектор як аргумент, тому ми отримуємо попередження в обох сценаріях.

Як поводитися з попередженням

Спосіб обробки цього попередження полягає у використанні функції Mean() лише з числовими векторами.

Наприклад, ми могли б обчислити середнє значення стовпця балів, оскільки воно числове:

 #calculate mean of points column
mean(df$points)

[1] 91.6

Або ми могли б використати функцію sapply() , щоб обчислити середнє значення кожного стовпця у кадрі даних:

 #calculate mean of every column in data frame
sapply(df, mean, 2)

    team points assists rebounds 
      NA 90 33 28 

Warning message:
In mean.default(X[[i]], ...):
  argument is not numeric or logical: returning NA

Ми можемо обчислити середнє значення кожного числового стовпця, але все одно отримуємо попередження, оскільки ми намагалися обчислити середнє значення стовпця персонажа «команда».

Щоб повністю уникнути цього попередження, ми можемо використовувати функцію sapply() лише з трьома числовими стовпцями:

 #calculate mean of each numeric column
sapply(df[c(' points ', ' assists ', ' rebounds ')], mean, 2)
  points assists rebounds 
      90 33 28

Зауважте, що середнє значення кожного числового стовпця відображається успішно, і ми не отримуємо жодних попереджень.

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

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

Як виправити: умова має довжину > 1 і використовуватиметься лише перший елемент
Як виправити: нечисловий аргумент двійкового оператора
Як виправити: dim(X) має мати додатну довжину
Як виправити: помилка під час вибору невикористаних аргументів

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

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