通过学习生信技能树的课程,使我受益匪浅,为了更好的理解生信技能树小洁老师的讲解,我开始陆续上传课堂笔记,以便将来查找使用。
R与Rstudio
1.在Rstudio中新建项目
过程:File > New Project > New Directory > New Project > Directory name > Creat Project
2.新建脚本
过程:File > New File > R script
理解一段代码
head(x1) # 查看前6行
pdf("x.pdf") # 新建一个 pdf
plot(x1$len,col = factor(x1$dose)) # 画个简单的散点图
title("Have a try") # 加个标题
dev.off() # 结束
write.table(x1,"x.txt") # 保存成txt
脚本打开是乱码的解决方案
file > Reopen with Encoding > UTF-8 > OK
数据类型和向量
(1)数值型(numeric):单独数字:1、3、1.255
(2)字符型(character):需加引号的单独数字、单独字母、或数字与字母的组合:“1”、“ads”、“15a”
(3)逻辑型(logical):TRUE、FALSE、NA(缺失值,存在但未知)
判断某元素是哪种数据类型时:用class()
> class(TRUE)
[1] "logical"
> class(2655)
[1] "numeric"
> class("25")
[1] "character"
逻辑运算中多个逻辑条件的连接: 与&、或|、非!
> 3<5&3>8
[1] FALSE
> !4>7
[1] TRUE
> 3<5|4>5
[1] TRUE
数据类型的判断与转换
is族函数,判断,返回值为TRUE或FALSE
as族函数实现数据类型之间的转换
数据结构
向量、数据框、列表、矩阵
(向量是数据框单独拿出来的一列,视为一个整体。一个向量只允许一种数据类型,)
向量
向量的生成
(1)、用c()逐一放到一起
> c(1,5,9,8,7)
[1] 1 5 9 8 7
(2)、连续的数字用冒号 ":"
> 1:6
[1] 1 2 3 4 5 6
(3)、有重复的用rep(), 有规律的序列用seq(), 随机数用rnorm()
> rep("gene", times = 3)
[1] "gene" "gene" "gene"
> seq(from = 3, to = 21, by = 3)
[1] 3 6 9 12 15 18 21
> rnorm(n=4)
[1] -0.5485853 1.6685133 2.0597608 -0.8668472
(5)、通过组合,产生更为复杂的向量
> paste0(rep("gene", times =3), 1:3)
[1] "gene1" "gene2" "gene3"
> paste0(rep("gene", times =4), 1:3)
[1] "gene1" "gene2" "gene3" "gene1"
> paste0(rep("gene", times =5), 1:3)
[1] "gene1" "gene2" "gene3" "gene1" "gene2"#循环补齐
练习题:
> c(1,"ab",66)
[1] "1" "ab" "66"
> seq(from=4,to=30,by=4)
[1] 4 8 12 16 20 24 28
> paste0(rep("sample",7),seq(from=4,to=30,by=4))
[1] "sample4" "sample8" "sample12" "sample16" "sample20" "sample24"
[7] "sample28"
(数值型+字符型=字符型 ,逻辑型+字符型=字符型 , 逻辑型+数值型=数值型)