Як виправити в 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) має мати додатну довжину
Як виправити: помилка під час вибору невикористаних аргументів