Ошибка при выполнении корреляции в R - PullRequest
1 голос
/ 09 апреля 2019

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

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

1 Ответ

2 голосов
/ 09 апреля 2019

Как уже упоминалось в комментариях, в вашем 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)]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...