使用 heatmap.2 创建差异基因表达的热图
Creating a heatmap for differential gene expression using heatmap.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))
根据 ?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"
由 reprex package (v2.0.1)
于 2022-04-23 创建
你可以看到所有的值都是字符。如您所料,这是因为第一列是文本,所以如果我们删除它,我们确实会得到一个数字矩阵:
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
由 reprex package (v2.0.1)
于 2022-04-23 创建
然而,我的首选解决方案是将这些值保存在数据框中:
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
由 reprex package (v2.0.1)
于 2022-04-23 创建
Dataframes 可以在不同的列中存储不同 类 的值,因此您 sample*
变量不会转换为字符。
要将其返回到矩阵中,您可以对数据框进行子集化并使用 as.matrix()
。这是一个使用 dplyr
进行子集化的示例:
library(dplyr)
gplots::heatmap.2(
dat %>% select(-gene) %>% as.matrix()
)
由 reprex package (v2.0.1)
于 2022-04-23 创建
我正在尝试创建不同基因的热图,并将 运行 解决我的数据未被读取为数字的问题。我认为这是因为第一列是基因名称,接下来的 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"
由 reprex package (v2.0.1)
于 2022-04-23 创建你可以看到所有的值都是字符。如您所料,这是因为第一列是文本,所以如果我们删除它,我们确实会得到一个数字矩阵:
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
由 reprex package (v2.0.1)
于 2022-04-23 创建然而,我的首选解决方案是将这些值保存在数据框中:
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
由 reprex package (v2.0.1)
于 2022-04-23 创建Dataframes 可以在不同的列中存储不同 类 的值,因此您 sample*
变量不会转换为字符。
要将其返回到矩阵中,您可以对数据框进行子集化并使用 as.matrix()
。这是一个使用 dplyr
进行子集化的示例:
library(dplyr)
gplots::heatmap.2(
dat %>% select(-gene) %>% as.matrix()
)
由 reprex package (v2.0.1)
于 2022-04-23 创建