Почему Heatmap.2 в R не смог прочитать числовой фрейм данных?

У меня есть следующие данные

GOBPID  Term    col1 col2 col3 col4 col5
GO:0001659  temperature_homeostasis 3.49690559977475    0   0   0   0
GO:0001660  fever_generation    3.22606939096511    0   0   0   0

который я пытался прочитать с помощью функцииheatmap.2:

library("gplots")
dat <- read.table("http://dpaste.com/1486837/plain/",header=TRUE)
dat   <- dat[,!names(dat) %in% c("GOBPID")];
dat2 <- dat[,-1]
rownames(dat2)<-dat[,1]
heatmap.2(dat2,symm=FALSE,trace="none");

В моем понимании он должен правильно читать data.frame. Но почему это не удалось?

Error in heatmap.2(dat, symm = FALSE, trace = "none") : 
  `x' must be a numeric matrix

Обновление: я нахожу это странным, потому что эта работа,

library("gplots")
round(Ca <- cor(attitude), 2)
heatmap.2(Ca, symm = FALSE, margins = c(6,6)) 

Структура Ca такая же, как у моего dat2, не так ли?


person neversaint    schedule 29.11.2013    source источник
comment
Есть две проблемы: первый столбец dat все еще содержит символы, и это кадр данных, но нужна матрица. Попробуйте тепловую карту.2(as.matrix(dat[,-1]),symm=FALSE,trace=none)   -  person Didzis Elferts    schedule 29.11.2013
comment
@DidzisElferts: Спасибо. Но я хочу термин как описание. Посмотрите мой обновленный пример, где работает столбец «персонажи».   -  person neversaint    schedule 29.11.2013
comment
dat2 — это кадр данных, а Ca — матрица. В сообщении об ошибке говорится, что x ДОЛЖЕН быть числовой матрицей!   -  person Didzis Elferts    schedule 29.11.2013


Ответы (1)


Функция heatmap.2() ожидает, что x будет числовой матрицей. Итак, вам нужно преобразовать фрейм данных dat2 в матрицу с помощью функции as.matrix().

heatmap.2(as.matrix(dat2),symm=FALSE,trace="none")

введите здесь описание изображения

person Didzis Elferts    schedule 29.11.2013