入门知识_1
#####2.1.向量生成🌟#####
#(1)用 c() 结合到一起
c(2,5,6,2,9)
c("a","f","md","b")
#(2)连续的数字用冒号“:”
1:5
#(3)有重复的用rep(),有规律的序列用seq(),随机数用rnorm
rep("gene",times=3)
seq(from=3,to=21,by=3)
rnorm(n=3)
#(4)通过组合,产生更为复杂的向量。
paste0(rep("gene",times=3),1:3)
paste0("gene",1:3)#循环补齐的思想
# 练习2-2: 向量生成
# 1.生成1到30之间所有4的倍数,答案是
#4,8,12,16,20,24,28
# 2.生成sample4,sample8,sample12…sample28
# 提示:paste0
#####2.2对单个向量进行的操作####
#(1)赋值给一个变量名
#快捷键alt -
x = c(1,3,5,1) #随意的写法
x
x <- c(1,3,5,1) #规范的赋值符号Alt+减号
x
#赋值+输出一起实现
x <- c(1,3,5,1);x
(x <- c(1,3,5,1))
#(2)简单数学计算
x+1
log(x)
sqrt(x)
#(3)根据某条件进行判断,生成逻辑型向量
x>3
x==3
#(4)初级统计
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
var(x) #方差
sd(x) #标准差
sum(x) #总和
> length(x) #长度
#[1] 4
> unique(x) #去重复
#[1] 1 3 5
> duplicated(x) #对应元素是否重复
#[1] FALSE FALSE FALSE TRUE
> table(x) #重复值统计
x
#1 3 5
#2 1 1
#####2.3.对两个向量进行的操作#####
x = c(1,3,5,1)
y = c(3,2,5,6)
#(1)逻辑比较,生成等长的逻辑向量
x == y
#[1] FALSE FALSE TRUE FALSE
x %in% y #x中的元素在y中吗
#[1] FALSE TRUE TRUE FALSE
#(2)数学计算
x + y
#(3)“连接“
paste(x,y,sep=":")
#[1] "1:3" "3:2" "5:5" "1:6"
paste0(x,y,seq=":")
#[1] "13:" "32:" "55:" "16:"
#(4)交集、并集、差集
intersect(x,y)#带有去重的功能
union(x,y)
setdiff(x,y)#X里面有,Y里面没有
setdiff(y,x)#Y里面有,X里面没有
#当两个向量长度不一致
x = c(1,3,5,6,2)
y = c(3,2,5)
x == y # 啊!warning!
#循环补齐--看ppt
#利用循环补齐简化代码
paste0(rep("gene",3),1:3)
paste0("gene",1:3)
#####2.4.向量筛选(取子集)--看ppt#####
x <- 8:12
#根据逻辑值取子集
x[x==10]
x[x<12]
#X[逻辑值+-]
x %in% c(9,13)
#[1] FALSE TRUE FALSE FALSE FALSE
x[x %in% c(9,13)]#判断X是否有数据在向量c(9,13)中,并返回在值,取子集,后面那个向量作为判断值
#[1] 9
#根据位置取子集
x[4]
x[2:4]
x[c(1,5)]#需要组成向量
x[-4]
x[-(2:4)]
####2.5.修改向量中的某个/某些元素:取子集+赋值
x
#改一个元素
x[4] <- 40
x
#改多个元素
x[c(1,5)] <- c(80,20)
x
#### 2.6 简单向量作图
k1 = rnorm(12);k1
k2 = rep(c("a","b","c","d"),each = 3);k2
plot(k1)
boxplot(k1~k2) #试着搜索boxplot表达什么意思
#练习2-3
# 1.将基因名"ACTR3B","ANLN","BAG1","BCL2","BIRC5","RAB","ABCT","ANLN","BAD","BCF","BARC7","BALV"组成一个向量,赋值给x
x <- c("ACTR3B","ANLN","BAG1","BCL2","BIRC5","RAB","ABCT","ANLN","BAD","BCF","BARC7","BALV")
# 2.用函数计算向量长度
length(x)
#[1] 12
# 3.用向量取子集的方法,选出第1,3,5,7,9,11个基因名。
x[c(1,3,5,7,9,11)]
#[1] "ACTR3B" "BAG1" "BIRC5" "ABCT" "BAD" "BARC7"
# 4.用向量取子集的方法,选出出在c("ANLN", "BCL2","TP53")中有的基因名。
# 提示:%in%
x[x%in%y]
#[1] "ANLN" "BCL2" "ANLN"
# 5.修改第6个基因名为"a"并查看是否成功
x[6] <- "a"
x
# "ACTR3B" "ANLN" "BAG1" "BCL2" "BIRC5" "a" "ABCT" "ANLN" "BAD" "BCF" "BARC7" "BALV"
# 6.生成10个随机数: rnorm(n=10,mean=0,sd=18),用向量取子集的方法,筛出其中小于-2的值
aa <- rnorm(n=10,mean=0,sd=18);aa
#[1] 6.0238354 3.3856300 11.2858357 2.9685265 -3.4157446 -37.3419818 -14.3310010 1.0476551 -0.4199629 9.3770162
aa[aa< -2]
#[1] -11.714805 -7.491855 -14.414474 -23.484352 -15.915436
##### 向量的几个进阶小问题
# 1.两个不同类型的向量合并在一起会怎么样?
# 2.如何将两个向量合到一起,组成一个长向量?
# 3.如何在向量首/尾/中间某位置增加一个元素?
# 4.如果向量x和y内容一致但顺序不一致,如何按照x的顺序排列y?
#https://mp.weixin.qq.com/s/2eJPrT7lz562vX0ij4gfVg
入门知识_2
rm(list = ls())
#重点:数据框
#1.数据框来源
# (1)在R中新建
# (2)由已有数据转换或处理得到
# (3)从文件中读取
# (4)内置数据集
#2.新建和读取数据框
df <- data.frame(gene = c("gene1","gene2","gene3"),
sam = c("sample1","sample2","sample3"),
exp = c(32,34,45))
df
df <- data.frame(gene = paste0("gene",1:3),
sam = paste0("sample",1:3),
exp = c(32,34,45))
df
df2 <- read.csv("gene.csv")
df2
#3.数据框属性描述
#
dim(df)#注释:几行几列 nrow ncol
nrow(df)
ncol(df)
#提取行名和列名地方
rownames(df)
colnames(df)
#4.数据框取子集
df[2,2]
df[2,]
df[,2]
df[c(1,3),1:2]
df[,"gene"]
df[,c('gene','exp')]
df$exp #删掉exp,按tab键试试
mean(df$exp)
#5.数据框编辑
#改一个格
df[3,3]<- 5
#改一整列
df$exp<-c(12,23,50)
#?
df$abc <-c(23,15,37)
df
#改行名和列名
rownames(df) <- c("r1","r2","r3")
#只修改某一行/列的名
rownames(df)[2]="x"
# 练习3-1
# 1.读取excise.csv这个文件,赋值给test。
# 2.描述test的属性(行名列名,行数列数)。
# 3.求第一列数值的中位数
# 4.修改test前两列的列名为Length和Width
# 5.提取test中,最后一列值为versicolor或setosa的行,组成一个新的数据框,赋值给test2。
#6.数据框进阶
#(1)行数较多的数据框可截取前/后几行查看
iris
head(iris)
head(iris,3)
tail(iris)
#(2)行列数都多的数据框可取前几行前几列查看
iris[1:3,1:3]
#(3) 查看每一列的数据类型和具体内容
str(df)
str(iris)
#(4)如果列名顺序错乱,如何按照指定顺序重排?
#https://mp.weixin.qq.com/s/rA92iZS8HUiuwlyrPirHdA
#(5)去除含有缺失值的行
#生成一个有NA的数据框
df<-data.frame(X1 = LETTERS[1:5],X2 = 1:5)
df[2,2] <- NA
df[4,1] <- NA
df
na.omit(df)
#(6)两个表格的链接
test1 <- data.frame(name = c('jimmy','nicker','doodle'),
blood_type = c("A","B","O"))
test1
test2 <- data.frame(name = c('doodle','jimmy','nicker','tony'),
group = c("group1","group1","group2","group2"),
vision = c(4.2,4.3,4.9,4.5))
test2
test3 <- data.frame(NAME = c('doodle','jimmy','lucy','nicker'),
weight = c(140,145,110,138))
tmp =merge(test1,test2,by="name")
merge(test1,test3,by.x = "name",by.y = "NAME")
#####矩阵和列表
m <- matrix(1:9, nrow = 3)
colnames(m) <- c("a","b","c") #列名
m
#整行
m[2,]
#整列
m[,1]
#单个格
m[2,3]
#多个格
m[2:3,1:2]
#转置和转换
m
t(m)
as.data.frame(m)
#列表
l <- list(m=matrix(1:9, nrow = 3),
df=data.frame(gene = paste0("gene",1:3),
sam = paste0("sample",1:3),
exp = c(32,34,45)),
x=c(1,3,5))
l
l[[2]]
l$df
#补充:元素的名字
#(1)向量
x=1:10
names(x)=letters[1:10]
x
x["a"]
#(2)数据框
df
names(df)
df[,"X1"]
#(3)列表
names(l)
l[["df"]]
#删除
#删除一个变量
rm(l)
#删除多个变量
rm(df,m)
#删除全部变量
rm(list = ls())
入门知识_3
#切换镜像
options("repos"=c(CRAN="http://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/")
入门知识4
#1.读取ex1.txt
ex1 = read.table("ex1.txt",header = T)
#2.读取ex2_B_cell_receptor_signaling_pathway.csv
ex2 = read.csv("ex2_B_cell_receptor_signaling_pathway.csv",
row.names = 1,
check.names = F)
#3.读取GSE32575_series_matrix.txt,赋值给gse。
gse = read.table("GSE32575_series_matrix.txt",
comment.char = "!",#不读取注释信息##这里是重点,这就解放了我们的双手,不需要删除很多注释的信息##文件GSE的文件的具体下载方式自己搜一下就知道了
row.names = 1,
header = T)
View(gse)
#4.描述gse的属性
#5.将gse导出为新的txt和csv文件。
write.csv(gse,file = "gse.csv")
#6.将gse保存为Rdata并加载。
save(gse,file = "zz.Rdata")
load("zz.Rdata")
网友评论