您的当前位置:首页Rs5 第一次用RStudio 画热图

Rs5 第一次用RStudio 画热图

2024-12-13 来源:哗拓教育

作业

1.read.table参数理解

  • file:文件名(包在“”内,或者使用一个字符型变量),可能需要全程路径(注意即使是在windows下,符号\也不允许包含在内,必须使用/替换),或者一个URL链接(http://...)(用URL对文件远程访问)。
  • header:一个逻辑值(FALSE or TRUE)用来反映这个文件的第一行是否包含变量名。
  • sep:文件中的字段分隔符,例如对用制表符分隔的文件使用sep=“\t”。
  • quote:指定用于包围字符型数据的字符。
  • dec:用来表示小数点的字符。
  • row.names:保存行名的向量,或文件中一个变量的序号或名字,缺省时行号取为1,2,3...
  • col.names:指定列名的字符向量(缺省值是:V1,V2,V3...)。
  • as.is:控制是否将字符型变量转化为因子型变量(如果值为FALSE),或者仍将其保留为字符型(TRUE)。as.is可以是逻辑型,数值型或字符型向,用来判断变量是否被保留为字符。
  • na.strings:代表缺失数据的值(转化NA)。
  • colClasses:指定各列的数据类型的一个字符型变量。
  • nrows:可以读取的最大行数(忽略负值)。
  • skip:在读取数据前跳过的行数。
  • check.names:如果为TRUE,则检查变量名是否存在R中有效。
  • fill:fill 设定(TRUE/FALSE),如果行的长度不同,设置为TRUE,可自动填充空格补齐。
  • strip.white:在sep已指定的情况下,如果为TRUE,则删除字符型变量前后多余的空格。
  • blank.lines.skip:如果为TRUE,忽略空白行。
  • comment.char:一个字符用来在数据文件中写注释,以这个字符开头的行将被忽略(要禁用这个参数,可使用comment.char="")。

2.运行各参数后,找出你认为读取文件用得比较多的参数

读取文件用得比较多的参数有:
“header”,“sep”,“quote”,“na.strings”,“fill”,“strip.white ”,“blank.lines.skip”,“comment.char ”,“”等等。

3.对上述参数用法进行理解并整理

  • header:按照惯例,首行只有对应列的字段而没有行标签对应的字段。因此,它会比余下的行少一个字段。(如果需要在 R 里面看到这一行,设置 header = TRUE。)如果要读取的文件里面有行标签的头字段(可能是空的),以下面的方式读取
    read.table("file.dat", header = TRUE, row.names = 1)
    列名字可以通过 col.names 显式地设定;显式设定的名字会替换首行里面的列名字(如果存在的话)。
  • sep:通常,打开文件看一下就可以确定文件所使用的字段分隔符,但对于空白分割的文件,可以选择默认的sep = "" (它能使用任何空白符作为分隔符,比如空格,制表符,换行符), sep = " " 或者 sep = "\t"。注意,分隔符的选择会影响输入的被引用的字符串。如果你有含有空字段的制表符分割的文件,一定要使用 sep = "\t"。
  • quote:默认情况下,字符串可以被 " 或 ' 括起,并且两种情况下,引号内部的字符都作为字符串的一部分。有效的引用字符(可能没有)的设置由参数 quote 控制。对于sep = "\n",默认值改为 quote = ""。如果没有设定分隔字符,在被引号括起的字符串里面,引号需要用 C格式的逃逸方式逃逸,即在引号前面直接加反斜杠 \。如果设定了分隔符,在被引号括起的字符串里面,按照电子表格的习惯,把引号重复两次以达到逃逸的效果。
  • na.strings :默认情况下,文件是假定用 NA 表示缺损值,但是,这可以通过参数 na.strings 改变。参数 na.strings 是一个可以包括一个或多个缺损值得字符描述方式的向量。 数值列的空字段也被看作是缺损值。在数值列,值 NaN,Inf 和 -Inf 都可以被接受的。
  • fill:fill 设定(TRUE/FALSE),如果行的长度不同,设置为TRUE,可自动填充空格补齐。
  • strip.white :如果设定了分隔符,字符字段起始和收尾处的空白会作为字段一部分看待的。为了去掉这些空白,可以使用参数 strip.white = TRUE。
  • blank.lines.skip:默认情况下,read.table 忽略空白行。这可以通过设置 blank.lines.skip = FALSE 来改变。但这个参数只有在和 fill = TRUE 共同使用时才有效。这时,可能是用空白行表明规则数据中的缺损样本。
  • comment.char:默认情况下,read.table 用 # 作为注释标识字符。如果碰到该字符(除了在被引用的字符串内),该行中随后的内容将会被忽略。只含有空白和注释的行被当作空白行。
    如果确认数据文件中没有注释内容,用 comment.char = "" 会比较安全 (也可能让速度比较快)。

4.read.csv参数理解

  • file:文件名(包在“”内,或者使用一个字符型变量),可能需要全程路径(注意即使是在windows下,符号\也不允许包含在内,必须使用/替换),或者一个URL链接(http://...)(用URL对文件远程访问)。
  • header:一个逻辑值(FALSE or TRUE)用来反映这个文件的第一行是否包含变量名。
  • sep:文件中的字段分隔符,例如对用制表符分隔的文件使用sep=“\t”。
  • quote:指定用于包围字符型数据的字符。
  • dec:用来表示小数点的字符。
  • fill:如果为TRUE且非所有的行中变量数目相同,则用空白填补。
  • comment.char:一个字符用来在数据文件中写注释,以这个字符开头的行将被忽略(要禁用这个参数,可使用comment.char="")。

5.运行各参数后,找出你认为读取文件用得比较多的参数

read.csv里的参数不多,如运行以下命令时,读取文件用得比较多的参数有,“header”,“ sep ”,“ quote”,“dec”,“fill ”,“comment.char ”。

a<-read.csv('/Users/chenjiangshu/cjs-beginner/GSE17215_series_matrix.txt')
b<-read.csv('/Users/chenjiangshu/cjs-beginner/GSE17215_series_matrix.txt',)
d<-read.csv('/Users/chenjiangshu/cjs-beginner/GSE17215_series_matrix.txt',comment.char = '!',sep='\t')
f<-read.table('/Users/chenjiangshu/cjs-beginner/GSE17215_series_matrix.txt',sep = '\t',)
####dim(询问数据类型的维度)
dim(d)
dim(f)
head(d)
head(f)
tail(d)
tail(f)
write.table(x = f,file = '0418.txt')

6.对上述参数用法进行理解并整理

  • header:按照惯例,首行只有对应列的字段而没有行标签对应的字段。因此,它会比余下的行少一个字段。(如果需要在 R 里面看到这一行,设置 header = TRUE。)如果要读取的文件里面有行标签的头字段(可能是空的),以下面的方式读取
    read.table("file.dat", header = TRUE, row.names = 1)
    列名字可以通过 col.names 显式地设定;显式设定的名字会替换首行里面的列名字(如果存在的话)。
  • sep:通常,打开文件看一下就可以确定文件所使用的字段分隔符,但对于空白分割的文件,可以选择默认的sep = "" (它能使用任何空白符作为分隔符,比如空格,制表符,换行符), sep = " " 或者 sep = "\t"。注意,分隔符的选择会影响输入的被引用的字符串。如果你有含有空字段的制表符分割的文件,一定要使用 sep = "\t"。
  • quote:默认情况下,字符串可以被 " 或 ' 括起,并且两种情况下,引号内部的字符都作为字符串的一部分。有效的引用字符(可能没有)的设置由参数 quote 控制。对于sep = "\n",默认值改为 quote = ""。如果没有设定分隔字符,在被引号括起的字符串里面,引号需要用 C格式的逃逸方式逃逸,即在引号前面直接加反斜杠 \。如果设定了分隔符,在被引号括起的字符串里面,按照电子表格的习惯,把引号重复两次以达到逃逸的效果。
  • fill:从一个电子表格中导出的文件通常会把拖尾的空字段。
  • strip.white :如果设定了分隔符,字符字段起始和收尾处的空白会作为字段一部分看待的。为了去掉这些空白,可以使用参数 strip.white = TRUE。
  • comment.char:默认情况下,read.table 用 # 作为注释标识字符。如果碰到该字符(除了在被引用的字符串内),该行中随后的内容将会被忽略。只含有空白和注释的行被当作空白行。
    如果确认数据文件中没有注释内容,用 comment.char = "" 会比较安全 (也可能让速度比较快)。

7.Rmarkdown 的各部件功能理解(文字描述)

在RStudio中从文件夹“file”的子目录“New file”里打开R markdown:


markerdown的打开方式.png

了解markdown一些选项和图标的功能:
如图中的解释:


选项及图标功能.png

8.安装R包 pheatmap,并截图安装结果

pheatmap安装结果.png

9.pheatmap的功能了解(文字描述)

R语言中的pheatmap包是制作热图的一个工具,在基因表达中,根据得来的实验数据,在使用pheatmap制作的基因表达或其它测试结果的热图中,如可以用不同颜色展示基因的表达量的差异。

10.pheatmap对读到的数据进行画图(图片展示)

library(pheatmap)
#创建数据集test测试矩阵
test = matrix(rnorm(200), 20, 10)
test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3
test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2
test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4
colnames(test) = paste("Test", 1:10, sep = "")
rownames(test) = paste("Gene", 1:20, sep = "")
# 用pheatmap函数画热图
pheatmap(test)
pheatmap 制作热图 20190427 .png

在热图格子里展示文本

pheatmap(test, display_numbers = TRUE)
pheatmap(test, display_numbers = TRUE, number_format = "\%.1e")
pheatmap(test, display_numbers = matrix(ifelse(test > 5, "*", ""), nrow(test)))
在热图格子里添加文本.png

pheatmap还可以显示行或列的分组信息,支持多种分组;

annotation_col = data.frame(CellType = factor(rep(c("CT1", "CT2"), 5)), Time = 1:5)
rownames(annotation_col) = paste("Test", 1:10, sep = "")

annotation_row = data.frame(GeneClass = factor(rep(c("Path1", "Path2", "Path3"), c(10, 4, 6))))
rownames(annotation_row) = paste("Gene", 1:20, sep = "")

pheatmap(test, annotation_col = annotation_col, annotation_row = annotation_row)
在热图里进行行和列分组.png

补充:
1.今天涉及到一些快捷键的使用

  • 在RStudio中点击tab键起补全命令功能
    比如在RStudio命令中想输入read.csv时,输入re并点击tab键就可以看到


    tab键的补全功能1.png

    比如在RStudio命令中输入pheatmap(按下tab键)就可以看到,选择需要参数,并按下enter


    tab键的补全功能2.png
  • 查看第一条和最后一条命令:在RStudio输入的很多命令中,想要回到第一条命令的位置,同时按command和向上光标移动键(相当于非Mac的home键),想看到最后一条命令,同时按时按command和向下光标移动建。

  • 查看临近上下条命令:查看上一条命令,按向上光标,同样的道理,查看下一条命令,按向下光标键。

  • as.is:as开头的函数(如as.numeric)表赋予,is开头的函数表判断,如(is.numeric)判断元素是否为数值。

  • paste和paste0的用法

paste (..., sep = " ", collapse = NULL)
paste0(..., collapse = NULL)

输入简单的向量,paste和paste0输入方式是一样的,如:

paste0(1:12)
paste(1:12)        # same
as.character(1:12) # same

输入多个向量,paste需要在每个向量间用sep = " ",分开。

显示全文