Получение ошибки при выполнении корреляции в R

У меня есть код, в котором я извлекаю файл CSV в R. У меня около 40-50 переменных, и я хочу уменьшить размеры для дальнейшего анализа. Большинство столбцов в наборе данных имеют формат INT, FACTOR ИЛИ NUM. Тип моего фрейма данных BO - список. Ошибка в приведенном ниже коде: «Ошибка в cor (BO): «x» должен быть числовым».

heatmap(cor(BO),Rowv = NA,Colv = NA)

у вас, вероятно, есть факторы или символы в вашем объекте BO.

patL 09.04.2019 08:49

у меня есть много факторов в моем Dataframe. Что делать в этом случае?

Nirpeksh 09.04.2019 08:59
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
273
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как упоминалось в комментариях, у вас есть нечисловые значения в вашем data.frame, которые вам нужно исключить:

heatmap(cor(BO[, sapply(BO, is.numeric)]),Rowv = NA,Colv = NA)

Объяснение

С помощью sapply вы перебираете все столбцы вашего фрейма данных (который внутренне хранится как list с инвариантом, согласно которому все элементы должны иметь одинаковую длину) и применяете функцию is.numeric к столбцам. Вы получаете логический вектор для всех столбцов, которые являются числовыми. Теперь с помощью этого вектора вы можете выбрать правильные столбцы.

Пример со встроенным набором данных

## does not work for the same reason
heatmap(cor(iris))
# Error in cor(iris) : 'x' must be numeric

## works
heatmap(cor(iris[, sapply(iris, is.numeric)]))

Ошибка: неожиданное ']' в "тепловой карте (cor (BO [, sapply (BO, is.numeric)]"

Nirpeksh 09.04.2019 09:04

Исправил, забыл закрывающую скобку. Если бы ваш код был полным, я мог бы протестировать его раньше;)

thothal 09.04.2019 09:07

Это сработало. Спасибо :) Но я хочу знать, как я могу уменьшить переменные из моего набора данных с помощью PCA.

Nirpeksh 09.04.2019 09:12

Я использую следующую команду для запуска PCA BO_pca <- prcomp(BO[, sapply(BO, is.numeric)], center = TRUE, scale = TRUE)

Nirpeksh 09.04.2019 09:35

Это приводит к следующей ошибке. Ошибка в prcomp.default(BO[, sapply(BO, is.numeric)], center = TRUE, scale = TRUE): невозможно масштабировать постоянный/нулевой столбец до единичной дисперсии

Nirpeksh 09.04.2019 09:36

Это еще одна проблема (которую тоже можно легко решить), поэтому, пожалуйста, задайте для нее новый вопрос.

thothal 09.04.2019 09:37

Другие вопросы по теме