前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >阿榜的生信笔记3

阿榜的生信笔记3

原创
作者头像
用户10480134
修改2023-05-04 00:58:43
8570
修改2023-05-04 00:58:43
举报
文章被收录于专栏:黄金榜黄金榜

哈喽,我是学习生物信息学的阿榜!非常感谢您能够点击进来查看我的笔记。我致力于通过笔记,将生物信息学知识分享给更多的人。如果有任何纰漏或谬误,欢迎指正。让我们一起加油,一起学习进步鸭?

这份思维导图可以让大家更容易地了解笔记里面的内容哦?:

一、数据框:

1、数据框来源

①、用代码新建:

代码语言:text
复制
#2.新建数据框
df1 <- data.frame(gene   = paste0("gene",1:4),
                 change  = rep(c("up","down"),each = 2),
                 score   = c(5,3,-2,-4))
df1

注意:代码新建数据框的格式。变量名只起提示作用,是赋值对象

②、由已有的数据转换或处理得到:as.data.frame()

③、读取表格文件:

代码语言:text
复制
df2 <- read.csv("gene.csv")
df2

④、R语言内置数据:如iris

2、数据框的属性

代码语言:text
复制
#3.数据框属性
#
dim(df1)
nrow(df1)
ncol(df1)
#
rownames(df1)
colnames(df1)

注意:dim()读取行数列数、nrow()读取行数、ncol()读取列数、rownames()读取行名、colnames()读取列名

3、数据框取子集

①、$:取数据框中的某一项

代码语言:text
复制
#4.数据框取子集
df1$gene  
mean(df1$score)

②、按坐标可以取到对应的值

代码语言:text
复制
## 按坐标
df1[2,2]
df1[2,]
df1[,2]
df1[c(1,3),1:2]

③、 按名字和按条件(逻辑值)

代码语言:text
复制
## 按名字
df1[,"gene"]
df1[,c('gene','change')]
## 按条件(逻辑值)
df1[df1$score>0,]

大家看看这道思考题:

4、建立自己的代码思维

下图教会了我们如何优雅地去数据框的最后一列:

5、数据框的修改

数据框的修改和向量类似,先提取出要修改的值,重新赋值后,修改成功了

注意下面这张图片:

提个小问题:你知道这两句代码的区别吗?

代码语言:text
复制
#5.数据框修改

#改一个格
df1[3,3] <- 5
df1
#改一整列
df1$score <- c(12,23,50,2)     
df1
#?
df1$p.value <- c(0.01,0.02,0.07,0.05) 
df1

答案是不存在是增加,存在是修改

代码语言:text
复制
#改行名和列名
rownames(df1) <- c("r1","r2","r3","r4")
#只修改某一行/列的名
colnames(df1)[2] <- "CHANGE"

6、数据框的连接

我们如何将这两个数据框连接起来呢?

连接方法如下图:

上面的问题看起来挺简单的,那下面这个问题呢?

实际上也不难,原理差不多,merge()厉害的地方在于它的参数很方便

代码语言:text
复制
#6.两个数据框的连接
test1 <- data.frame(name = c('jimmy','nicker','Damon','Sophie'), 
                    blood_type = c("A","B","O","AB"))
test1
test2 <- data.frame(name = c('Damon','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('Damon','jimmy','nicker','tony'),
                    weight = c(140,145,110,138))
test3
merge(test1,test2,by="name")
merge(test1,test3,by.x = "name",by.y = "NAME")

数据框知识点有点多,大家用下面的知识记忆卡片梳理下知识点吧?:

二、矩阵

①、新建矩阵和取子集

代码语言:text
复制
##### 矩阵和列表
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]

②、矩阵的转置和转换

如上图所示,colnames()<-c()列名重新赋值,t()转置,行和列互相转换,as.data.frame()将矩阵转换为数据框

代码语言:text
复制
m
t(m)
as.data.frame(m)

提个小问题:下图m的类型为什么前后不一致?大家想想上篇笔记的某句话

大家想到了吗?它就是

③、用我们目前学到的知识,用矩阵画个热图看看吧,正反馈奖励自己鸭?

代码语言:text
复制
m
pheatmap::pheatmap(m)
pheatmap::pheatmap(m,cluster_cols = F,cluster_rows = F)

注意:两幅热图不一样的原因是行列是否聚类

记住这句话哦?

大家再坚持坚持,还有列表一个知识点了?

三、列表

①、列表新建和取子集

注意:只有列表有[[]]方法取子集。列表取子集类比于套娃

代码语言:text
复制
#列表
l <- list(m1 = matrix(1:9, nrow = 3),
          m2 = matrix(2:9, nrow = 2))
l

l[[2]]
l$m1
jimmy <- fuction(a,b,m=2){
   (a+b)^m
}
jimmy <- fuction(i){}
plot(iris[,1],col=iris[,5])
plot(iris[,2],col=iris[,5])
plot(iris[,3],col=iris[,5])
x=c(2,5,6,2,9);plot(x)
iris
# 补充:元素的名字
plot(iris[,1:4])
scores = c(100,59,73,95,45)
names(scores) = c("jimmy","nicker","Damon","Sophie","tony")
scores
scores["jimmy"]
scores[c("jimmy","nicker")]

names(scores)[scores>60]

②、删除变量

代码语言:text
复制
# 删除 
rm(l)
rm(df1,df2)
rm(list = ls()) 

下面这张图片带大家复习RStudio面板

现在进行总结了,大家能看到这里,棒棒哒?

以上是我这次在学习生物信息学过程中所整理的笔记。如果大家对这个领域也感兴趣,欢迎加我好友,我的qq号是1841113542。希望大家能够一起学习,共同进步。如果在笔记中有错误或者不足之处,欢迎大家指正,我们一起加油鸭?

引用自生信技能树——小洁老师

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云原生分布式云中心
云原生分布式云中心(Tencent Kubernetes Engine Distributed Cloud Center, TDCC)是面向多云多集群场景的应用管理平台,支持将云原生化的应用扩展到分布式云,全局视角统一管理和运维分布式云资源,轻松地将您的业务发布至全球,一次部署处处运行。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档