title: "lesson4"
output: html_document
date: "2023-12-15"
代码语言:{r setup, include=FALSE}复制knitr::opts_chunk$set(echo = TRUE)
代码语言:text复制library(pheatmap)
m <- matrix(1:9, nrow = 3)
pheatmap::pheatmap(m)
热图顺序发生了调整,不再和矩阵的位置对应:由于函数的规定,发生了聚类树
如何修改使其不发生聚类?
代码语言:text复制pheatmap::pheatmap(m, cluster_cols = F, cluster_rows = F)
代码语言:text复制scores = c(100,59,73,95,45)
names(scores) = c("jimmy","nicker","Damon","Sophie","tony")
scores
输出的结果还是向量,不是变成了数据框,只是加了名字
代码语言:text复制names(scores)[scores>60]
给向量按照逻辑值取子集,scores>60输出结果是逻辑值(比较运算的输出结果是逻辑值
需要注意,根据我们的问题和需要,names(scores)scores>60前后scores是具有对应关系的,即使前后分属于完全没有关系的向量,也不会报错!需要及时检查自己的代码和结果输出
代码语言:text复制y <- c(1,2,5)
x <- c(8,9,0)
y[x>0]
完全没有实际意义的结果
代码语言:text复制df1 <- data.frame(gene = paste0("gene",1:4),
change = rep(c("up","down"),each = 2),
score = c(5,3,-2,-4))
df1[df1$score>0,] #line1
df1[df1$score > 0,1] #line2
df1$gene[df1$score > 0] #line3
语句拆解:
line1: >0进行逻辑运算,输出T/F值;df1$score在df1中取子集(取score列);
df1$score>0 对取出的列内向量进行逻辑运算,score哪些向量>0;
df1[]在df1中取子集,df1df1$score>0, 在df1中取出score列内向量>0的行
line2: df1$score > 0,取df1中score列内向量>0的;
df1df1$score > 0,1,取df1中score列内向量>0的行,其所对应的第一列的内容
line3:df1$score > 0,取df1中score列内向量>0的;
df1$gene 取df1中gene这一列;
df1$genedf1$score > 0 取gene这一列中对应score列内向量>0的
heatmap()作图只能对matrix进行作图,内置数据集读取时行名列名都不占独立行列
代码语言:text复制iris01 <- as.matrix(iris) #报错,因为最后一列是字符串,注意检查数据内容
iris01 <- as.matrix(iris[2:150,2:5]) #不用去掉首行首列
iris01 <- as.matrix(iris[,-5]) #good
heatmap(iris01)
但用openxlsx读取excel文件的时候第一列第一行的变量名都是读取了的(在不修改默认值的情况下,数据转换时需要注意去行列
install.packages("")失败,改用Biomanager::install()
插入图片麻烦死了 厕评
引自生信技能树