Lesson4

2023-12-16 03:11:14 浏览数 (1)


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()

插入图片麻烦死了 厕评

引自生信技能树

0 人点赞