Создание тепловой карты для дифференциальной экспрессии генов с использованием тепловой карты.2

Я пытаюсь создать тепловую карту разных генов и продолжаю сталкиваться с проблемой, что мои данные не читаются как числовые. Я думаю, это потому, что первый столбец — это имена генов, а следующие 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))

Стоит ли изучать 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
0
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Согласно ?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 не помогло мне определить проблему или команду для исправления - вы знаете, что это такое?

Eric Pachowicz 23.04.2022 21:07

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