Я пытаюсь создать тепловую карту разных генов и продолжаю сталкиваться с проблемой, что мои данные не читаются как числовые. Я думаю, это потому, что первый столбец — это имена генов, а следующие 6 — значения. Я пробовал as.matrix, as.numeric и Melt, чтобы заставить его работать, но пока не добился успеха. Пример кода будет выглядеть следующим образом (я думаю).
dat = (gene = c("gene1" , "gene2" , "gene3" , "gene4") , sample1 = c(1.3, -.6, .05, .69), sample2 = c(1.8,.05,-.98, .42))
Согласно ?gplots::heatmap.2()
ожидается матрица только с числовыми значениями, но когда вы делаете что-то вроде:
matrix(
c(
gene = c("gene1" , "gene2" , "gene3" , "gene4") ,
sample1 = c(1.3,-.6, .05, .69),
sample2 = c(1.8, .05, -.98, .42)
),
nrow = 4
)
#> [,1] [,2] [,3]
#> [1,] "gene1" "1.3" "1.8"
#> [2,] "gene2" "-0.6" "0.05"
#> [3,] "gene3" "0.05" "-0.98"
#> [4,] "gene4" "0.69" "0.42"
Created on 2022-04-23 by the reprex package (v2.0.1)
вы можете видеть, что все значения являются символами. Как вы подозревали, это связано с тем, что первый столбец является текстовым, поэтому, если мы его удалим, мы получим числовую матрицу:
matrix(
c(
sample1 = c(1.3,-.6, .05, .69),
sample2 = c(1.8, .05, -.98, .42)
),
nrow = 4
)
#> [,1] [,2]
#> [1,] 1.30 1.80
#> [2,] -0.60 0.05
#> [3,] 0.05 -0.98
#> [4,] 0.69 0.42
Created on 2022-04-23 by the reprex package (v2.0.1)
Однако мое предпочтительное решение - сохранить эти значения в фрейме данных:
dat <- data.frame(
gene = c("gene1" , "gene2" , "gene3" , "gene4") ,
sample1 = c(1.3,-.6, .05, .69),
sample2 = c(1.8, .05, -.98, .42)
)
dat
#> gene sample1 sample2
#> 1 gene1 1.30 1.80
#> 2 gene2 -0.60 0.05
#> 3 gene3 0.05 -0.98
#> 4 gene4 0.69 0.42
Created on 2022-04-23 by the reprex package (v2.0.1)
Фреймы данных могут хранить значения разных классов в разных столбцах, поэтому ваши sample*
переменные не преобразуются в символы.
Чтобы вернуть это в матрицу, вы подмножаете свой фрейм данных и используете as.matrix()
. Вот пример использования dplyr
для подмножества:
library(dplyr)
gplots::heatmap.2(
dat %>% select(-gene) %>% as.matrix()
)
Created on 2022-04-23 by the reprex package (v2.0.1)
Когда я запускаю его, я получаю случайное число в правой части моей тепловой карты, за исключением этого, он работает так же, как и ваш. Чтение страницы справки r не помогло мне определить проблему или команду для исправления - вы знаете, что это такое?