前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >生信技能树笔记day3

生信技能树笔记day3

原创
作者头像
天空UP
修改于 2023-01-16 09:01:14
修改于 2023-01-16 09:01:14
9080
举报

title: "生信技能树学习笔记"

引用自生信技能树 author: "天空"

date: "2023-01-02"

output: html_document


一、数据框、矩阵和列表

1. 数据框来源

(1)代码新建数据框

代码新建.jpg
代码新建.jpg
代码语言:text
AI代码解释
复制
#新建和读取数据框
df1 <- data.frame(gene   = paste0("gene",1:4),
                 change  = rep(c("up","down"),each = 2),
                 score   = c(5,3,-2,-4))
df1
代码语言:txt
AI代码解释
复制
##    gene change score
## 1 gene1     up     5
## 2 gene2     up     3
## 3 gene3   down    -2
## 4 gene4   down    -4

(2)文件中读取

文件读取数据.jpg
文件读取数据.jpg
代码语言:text
AI代码解释
复制
df2 <- read.csv("day3/R_02/gene.csv")
df2
代码语言:txt
AI代码解释
复制
##    gene change score
## 1 gene1     up     5
## 2 gene2     up     3
## 3 gene3   down    -2
## 4 gene4   down    -4

2. 数据框属性

数据框属性.jpg
数据框属性.jpg
代码语言:text
AI代码解释
复制
#数据框属性
dim(df1)
代码语言:txt
AI代码解释
复制
## [1] 4 3
代码语言:text
AI代码解释
复制
nrow(df1)
代码语言:txt
AI代码解释
复制
## [1] 4
代码语言:text
AI代码解释
复制
ncol(df1)
代码语言:txt
AI代码解释
复制
## [1] 3
代码语言:text
AI代码解释
复制
rownames(df1)
代码语言:txt
AI代码解释
复制
## [1] "1" "2" "3" "4"
代码语言:text
AI代码解释
复制
colnames(df1)
代码语言:txt
AI代码解释
复制
## [1] "gene"   "change" "score"

3. 数据框取子集

数据框取子集.jpg
数据框取子集.jpg
代码语言:text
AI代码解释
复制
#数据框取子集
df1$gene  #删掉score,按tab键试试
代码语言:txt
AI代码解释
复制
## [1] "gene1" "gene2" "gene3" "gene4"
代码语言:text
AI代码解释
复制
mean(df1$score)
代码语言:txt
AI代码解释
复制
## [1] 0.5
代码语言:text
AI代码解释
复制
# 按坐标
df1[2,2]
代码语言:txt
AI代码解释
复制
## [1] "up"
代码语言:text
AI代码解释
复制
df1[2,]
代码语言:txt
AI代码解释
复制
##    gene change score
## 2 gene2     up     3
代码语言:text
AI代码解释
复制
df1[,2]
代码语言:txt
AI代码解释
复制
## [1] "up"   "up"   "down" "down"
代码语言:text
AI代码解释
复制
df1[c(1,3),1:2]
代码语言:txt
AI代码解释
复制
##    gene change
## 1 gene1     up
## 3 gene3   down
代码语言:text
AI代码解释
复制
# 按名字
df1[,"gene"]
代码语言:txt
AI代码解释
复制
## [1] "gene1" "gene2" "gene3" "gene4"
代码语言:text
AI代码解释
复制
typeof(df1[,"gene"])
代码语言:txt
AI代码解释
复制
## [1] "character"
代码语言:text
AI代码解释
复制
df1["gene"]
代码语言:txt
AI代码解释
复制
##    gene
## 1 gene1
## 2 gene2
## 3 gene3
## 4 gene4
代码语言:text
AI代码解释
复制
typeof(df1["gene"])
代码语言:txt
AI代码解释
复制
## [1] "list"
代码语言:text
AI代码解释
复制
df1[,c('gene','change')]
代码语言:txt
AI代码解释
复制
##    gene change
## 1 gene1     up
## 2 gene2     up
## 3 gene3   down
## 4 gene4   down
代码语言:text
AI代码解释
复制
# 按条件(逻辑值)
df1[df1$score>0,]
代码语言:txt
AI代码解释
复制
##    gene change score
## 1 gene1     up     5
## 2 gene2     up     3
代码语言:text
AI代码解释
复制
# 中括号里面的逗号表示维度分割!!!
# 数据框按照逻辑值取子集,TRUE对应的行/列留下,FALSE对应的行/列丢掉

4. 代码思维

代码思维1.jpg
代码思维1.jpg
代码语言:text
AI代码解释
复制
# 代码思维
#如何取数据框的最后一列?
df1[,3]
代码语言:txt
AI代码解释
复制
## [1]  5  3 -2 -4
代码语言:text
AI代码解释
复制
df1[,ncol(df1)]
代码语言:txt
AI代码解释
复制
## [1]  5  3 -2 -4
代码语言:text
AI代码解释
复制
#如何取数据框除了最后一列以外的其他列?
df1[,-ncol(df1)]
代码语言:txt
AI代码解释
复制
##    gene change
## 1 gene1     up
## 2 gene2     up
## 3 gene3   down
## 4 gene4   down

5. 数据框修改行/列名

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

6. 两个数据框的连接

数据框连接.jpg
数据框连接.jpg
代码语言:text
AI代码解释
复制
#两个数据框的连接
test1 <- data.frame(name = c('jimmy','nicker','Damon','Sophie'), 
                    blood_type = c("A","B","O","AB"))
test1
代码语言:txt
AI代码解释
复制
##     name blood_type
## 1  jimmy          A
## 2 nicker          B
## 3  Damon          O
## 4 Sophie         AB
代码语言:text
AI代码解释
复制
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
代码语言:txt
AI代码解释
复制
##     name  group vision
## 1  Damon group1    4.2
## 2  jimmy group1    4.3
## 3 nicker group2    4.9
## 4   tony group2    4.5
代码语言:text
AI代码解释
复制
test3 <- data.frame(NAME = c('Damon','jimmy','nicker','tony'),
                    weight = c(140,145,110,138))
test3
代码语言:txt
AI代码解释
复制
##     NAME weight
## 1  Damon    140
## 2  jimmy    145
## 3 nicker    110
## 4   tony    138
代码语言:text
AI代码解释
复制
merge(test1,test2,by="name")
代码语言:txt
AI代码解释
复制
##     name blood_type  group vision
## 1  Damon          O group1    4.2
## 2  jimmy          A group1    4.3
## 3 nicker          B group2    4.9
代码语言:text
AI代码解释
复制
merge(test1,test3,by.x = "name",by.y = "NAME")
代码语言:txt
AI代码解释
复制
##     name blood_type weight
## 1  Damon          O    140
## 2  jimmy          A    145
## 3 nicker          B    110

7.记忆卡片

记忆卡片3.jpg
记忆卡片3.jpg

8. 矩阵新建和取子集

矩阵新建.jpg
矩阵新建.jpg
代码语言:text
AI代码解释
复制
m <- matrix(1:9, nrow = 3)
colnames(m) <- c("a","b","c") #加列名
m
代码语言:txt
AI代码解释
复制
##      a b c
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
代码语言:text
AI代码解释
复制
m[2,]
代码语言:txt
AI代码解释
复制
## a b c 
## 2 5 8
代码语言:text
AI代码解释
复制
m[,1]
代码语言:txt
AI代码解释
复制
## [1] 1 2 3
代码语言:text
AI代码解释
复制
m[2,3]
代码语言:txt
AI代码解释
复制
## c 
## 8
代码语言:text
AI代码解释
复制
m[2:3,1:2]
代码语言:txt
AI代码解释
复制
##      a b
## [1,] 2 5
## [2,] 3 6
代码语言:text
AI代码解释
复制
m
代码语言:txt
AI代码解释
复制
##      a b c
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9

9. 矩阵的转置和转换

转置和转换.jpg
转置和转换.jpg
代码语言:text
AI代码解释
复制
t(m)
代码语言:txt
AI代码解释
复制
##   [,1] [,2] [,3]
## a    1    2    3
## b    4    5    6
## c    7    8    9
代码语言:text
AI代码解释
复制
class(m)
代码语言:txt
AI代码解释
复制
## [1] "matrix" "array"
代码语言:text
AI代码解释
复制
m1 <- as.data.frame(m)
m1
代码语言:txt
AI代码解释
复制
##   a b c
## 1 1 4 7
## 2 2 5 8
## 3 3 6 9
代码语言:text
AI代码解释
复制
class(m1)
代码语言:txt
AI代码解释
复制
## [1] "data.frame"

10. 关于R语言的修改

R修.jpg
R修.jpg

11. 列表的新建与取子集

列表新建.jpg
列表新建.jpg
代码语言:text
AI代码解释
复制
#列表
l <- list(m1 = matrix(1:9, nrow = 3),
          m2 = matrix(2:9, nrow = 2))
l
代码语言:txt
AI代码解释
复制
## $m1
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
## 
## $m2
##      [,1] [,2] [,3] [,4]
## [1,]    2    4    6    8
## [2,]    3    5    7    9
代码语言:text
AI代码解释
复制
l[[2]]
代码语言:txt
AI代码解释
复制
##      [,1] [,2] [,3] [,4]
## [1,]    2    4    6    8
## [2,]    3    5    7    9
代码语言:text
AI代码解释
复制
l$m1
代码语言:txt
AI代码解释
复制
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
代码语言:text
AI代码解释
复制
# 补充:元素的名字

scores = c(100,59,73,95,45)
names(scores) = c("jimmy","nicker","Damon","Sophie","tony")
scores
代码语言:txt
AI代码解释
复制
##  jimmy nicker  Damon Sophie   tony 
##    100     59     73     95     45
代码语言:text
AI代码解释
复制
scores["jimmy"]
代码语言:txt
AI代码解释
复制
## jimmy 
##   100
代码语言:text
AI代码解释
复制
scores[c("jimmy","nicker")]
代码语言:txt
AI代码解释
复制
##  jimmy nicker 
##    100     59
代码语言:text
AI代码解释
复制
names(scores)[scores>60]
代码语言:txt
AI代码解释
复制
## [1] "jimmy"  "Damon"  "Sophie"

12. 删除变量

删除变量.jpg
删除变量.jpg

13. 数据结构总结

数据结构总结.jpg
数据结构总结.jpg

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
搞懂JavaScript引擎运行原理
JS引擎 — 一个读取代码并运行的引擎,没有单一的“JS引擎”;,每个浏览器都有自己的引擎,如谷歌有V。
前端小智@大迁世界
2019/07/02
9250
JavaScript引擎是如何工作的?从调用栈到Promise你需要知道的一切[每日前端夜话0x6B]
JavaScript Engines: How Do They Even Work? 你有没有想过浏览器是如何读取和运行 JavaScript 代码的吗?这看起来很神奇,但你可以学到一些发生在幕后的事
疯狂的技术宅
2019/05/21
1.6K0
JavaScript中的执行上下文和堆栈[每日前端夜话(0x0C)]
在这篇文章中,我将深入探讨JavaScript的最基本部分之一,即Execution Context(执行上下文)。 在本文结束时,你应该对解释器了解得更清楚:为什么在声明它们之前可以使用某些函数或变量?以及它们的值是如何确定的?
疯狂的技术宅
2019/03/27
1.3K0
JavaScript中的执行上下文和堆栈[每日前端夜话(0x0C)]
万字干货!详解JavaScript执行过程
栈的特点是"LIFO,即后进先出(Last in, first out)"。数据存储时只能从顶部逐个存入,取出时也需从顶部逐个取出。
童欧巴
2021/08/20
1.1K0
万字干货!详解JavaScript执行过程
javascript入门到进阶 - js系列六:执行上下文
javascript代码在执行时,会进入一个执行上下文中,执行上下文可以理解为当前代码的运行环境。
公众号---人生代码
2020/07/16
5060
javascript入门到进阶 - js系列六:执行上下文
手把手教会你JavaScript引擎如何执行JavaScript代码
JavaScript 在运行过程中与其他语言有所不一样,如果不理解 JavaScript 的词法环境、执行上下文等内容,很容易会在开发过程中产生 Bug,比如this指向和预期不一致、某个变量不知道为什么被改了,等等。所以今天我们就来聊一聊 JavaScript 代码的运行过程。
前端皮皮
2022/08/17
4960
手把手教会你JavaScript引擎如何执行JavaScript代码
JS执行上下文的两个阶段做了些啥?
每个web浏览器都有自己的JS引擎形式,尽管目的一样。Chrome 有 v8, Mozilla 有 spider monkey等,JS引擎只是将JS源代码转换成编译器能够理解的语言,然后执行它。
前端小智@大迁世界
2020/06/24
7130
JS执行上下文的两个阶段做了些啥?
JS到底是怎么执行的:一文彻底搞清执行上下文
所有JavaScript代码都需要在某种环境中托管和运行。在大多数情况下,这种环境是一个web浏览器。
前端修罗场
2022/07/29
1.6K0
JS到底是怎么执行的:一文彻底搞清执行上下文
JavaScript引擎相关名词
JS引擎的一些事 JS引擎 一个读取代码并运行的引擎,没有单一的"JS引擎"; 每个浏览器都有自己的引擎,流行的引擎项目: V8 开源,由 Google 开发,用 C ++ 编写 Rhino 由 Mozilla 基金会管理,开源,完全用 Java 开发 SpiderMonkey 第一个支持 Netscape Navigator 的 JavaScript 引擎,目前正供 Firefox 使用 JavaScriptCore 开源,以Nitro形式销售,由苹果为Safari开发 KJS KDE的引擎
薛定喵君
2019/11/06
5910
「查缺补漏」JavaScript执行上下文-执行栈
突然觉得对于一名JavaScript开发者而言,需要知道JavaScript程序内部是如何运行的,那么对于此章节执行上下文和执行栈的理解很重要,对理解其他JavaScript概念(变量声明提示,作用域和闭包)都有帮助。
前端老王
2020/09/28
6020
「查缺补漏」JavaScript执行上下文-执行栈
JavaScript 中的执行上下文和调用栈是什么
在这篇文章里,我会深入地探讨 JavaScript 中最基本概念之一,那就是执行上下文。通过这篇文章,你应该能够清楚地了解到 JS 解释器究竟在干嘛,为什么可以在一些函数和变量声明之前就能使用,以及它们的值是怎样被决定的。
用户7293182
2022/01/20
7820
JavaScript 中的执行上下文和调用栈是什么
(ES5版)深入理解 JavaScript 执行上下文和执行栈
最近在研究 JavaScript 基础性的东西,但是看到对于执行上下文的解释我发现有两种,一种是执行上下文包含:scope(作用域)、variable object(变量对象)、this value(this 值),另外一个种是包含:lexical environment(词法环境)、variable environment(变量环境)、this value(this 值)。
桃翁
2020/03/25
9730
(ES5版)深入理解 JavaScript 执行上下文和执行栈
JavaScript 执行线程图解
这是研究 JavaScript 内部工作方式的系列文章的第一篇。我会尽力使它变得有趣,并且不让你感到厌烦,因为我知道这些东西有时会变得非常乏味!
疯狂的技术宅
2020/03/16
7660
JavaScript 执行线程图解
前端冲刺必备指南-执行上下文/作用域链/闭包/一等公民
前言 大家好,我是吒儿?,每天努力一点点?,就能升职加薪?当上总经理出任CEO迎娶白富美走上人生巅峰?,想想还有点小激动呢?。 这是我的第11期文章内容✍,我并不希望把?这篇文章内容成为笔记去记,或者
达达前端
2020/05/20
8550
浏览器工作原理 - 浏览器中的 JavaScript
函数 foo() 是一个完整的函数声明,没有涉及赋值操作;第二个函数,先声明了变量 bar,再把 function () {} 赋值给 bar。可以理解为:
Cellinlab
2023/05/17
6330
浏览器工作原理 - 浏览器中的 JavaScript
JS执行上下文与调用栈
本文分享 了 JavaScript 基础的两个方面:执行上下文和调用堆栈。每当 JavaScript 代码运行时,它都在执行上下文中运行;调用栈则可以在脚本调用多个函数时,跟踪每个函数在完成执行时应该返回的控制点。
前端开发博客
2020/11/04
1.6K0
JavaScript 执行线程图解
这是研究 JavaScript 内部工作方式的系列文章的第一篇。我会尽力使它变得有趣,并且不让你感到厌烦,因为我知道这些东西有时会变得非常乏味!
4O4
2022/04/25
5110
JavaScript 执行线程图解
[重要] 深入理解 JavaScript 中的作用域和上下文
在本教程中,我们将深入学习 JavaScript 中作用域(Scope)的一切。 所以,来吧。
胡哥有话说
2019/07/25
1.4K0
[重要] 深入理解 JavaScript 中的作用域和上下文
JAVASCRIPT FUNCTIONS 详解
本文是@堂主 对《Pro JavaScript with Mootools》一书的第二章函数部分知识点讲解的翻译。该书的作者 Mark Joseph Obcena 是 Mootools 库的作者和目前开发团队的 Leader。虽然本篇文章实际译于 2012 年初,但个人感觉这部分对 Javascript 函数的基本知识、内部机制及 JavaScript 解析器的运行机制讲的非常明白,脉络也清楚,对初学者掌握 JavaScript 函数基础知识很有好处。尤其难得的是不同于其他 JavaScript书籍讲述的都是分散的知识点,这本书的知识讲解是有清晰脉络的,循序渐进。换句话说,这本书中的 JavaScript 知识是串起来的。
政采云前端团队
2019/12/20
7620
从 JavaScript 作用域说开去
在电脑程序设计中,作用域(scope,或译作有效范围)是名字(name)与实体(entity)的绑定(binding)保持有效的那部分计算机程序。不同的编程语言可能有不同的作用域和名字解析。而同一语言内也可能存在多种作用域,随实体的类型变化而不同。作用域类别影响变量的绑定方式,根据语言使用静态作用域还是动态作用域变量的取值可能会有不同的结果。
一缕殇流化隐半边冰霜
2018/08/29
9070
从 JavaScript 作用域说开去
推荐阅读
相关推荐
搞懂JavaScript引擎运行原理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档