专栏名称: 生信技能树
生物信息学学习资料分析,常见数据格式及公共数据库资料分享。常见分析软件及流程,基因检测及癌症相关动态。
目录
相关文章推荐
爱否科技  ·  2025 年 1 ... ·  昨天  
高校人才网V  ·  年薪高达50万 | ... ·  昨天  
51好读  ›  专栏  ›  生信技能树

生信入门(二)

生信技能树  · 公众号  ·  · 2024-06-15 08:56

正文

从我们 生信技能树 历年的几千个马拉松授课学员里面募集了一些优秀的创作者,某种意义来说是传承了我们生信技能树的知识整理和分享的思想!


今天的是三周合计15天的数据挖掘授课学员一点一滴整理的授课知识点笔记哦,还有互动练习题哈,欢迎大家点击文末的阅读原文去关注我们学员的公众号哦!

1、向量的操作

1.1 赋值

1) 规范写法
# 查看xx[1] 1 4 6 9 0 4
2) 随意的写法x = c(1,4,6,9,0,4)
3) 赋值和输出(两个代码用";"分隔)x = c(1,4,6,9,0,4); x

变量的命名

- 可以用字母、数字、点、逗号和下划线

- 不能用R自带的函数名和常用的R包名还有中文

1.2 简单的数学计算

'''向量的运算就是将里面的元素一个个拿出来进行计算。'''x 1,4,6,9,0,4)
x + 1# 2 5 7 10 1 5
log(x)# 0.000000 1.386294 1.791759 2.197225 -Inf 1.386294

1.3 比较运算,生成 逻辑值 向量

'''向量的比较同向量的运算一样,将向量中的元素逐个取出,然后进行比较。向量里面有多少个元素,就返回多少个结果。'''x > 3# FALSE  TRUE  TRUE  TRUE FALSE  TRUE
x == 3# FALSE FALSE FALSE FALSE FALSE FALSE

1.4 初级统计

max(x)    # 最大值
min(x) # 最小值
mean(x) # 平均值
median(x) # 中位数
var(x) # 方差
sd(x) # 标准差
sum(x) # 求和
length(x) # 长度,向量的长度是指元素的个数# length()函数的小应用a q(2, 100, 3)paste0(rep('student', times=length(a)), a)# R语言函数思想:能用函数代替,就不要手动去数
unique(x) # 去重,先来后到,从左往右
duplicated(x) # 判断是否重复
table(x) # 统计重复值
sort(x) # 排序,返回的是排好后的值,默认是升序# 0 1 4 4 6 9sort(x,decreasing=T) # 降序排列
arrange(x) # dplyr包中的一个函数,
rank(x)"""rank(x, na.last = TRUE, ties.method = c("average", "first", "last", "random", "max", "min")) "first" 是最基本的排序,小数在前大数在后,相同元素先者在前后者在后。
  "max" 是相同元素都取该组中最好的水平,即通常所讲的并列排序。
  "min" 是相同元素都取该组中最差的水平,可以增大序列的等级差异。
  " average" 是相同元素都取该组中的平均水平,该水平可能是个小数。
  "random" 是相同元素随机编排次序,避免了“先到先得”,“权重”优于“先后顺序”的机制增大了随机的程度。"""# 2.0 3.5 5.0 6.0 1.0 3.5
order(x) # 返回的是排序好的索引# 5 1 2 6 3 4

tips : 在终端中运行 "?函数" 可以查看该函数的帮助文档

1.5 对两个向量的操作

A. 两个等长向量的操作

等长向量运算遵循一一对应原则,下标相等的数之间进行运算。

(1) 比较运算,生成等长的逻辑向量

x = c(1, 5, 9, 3, 6, 88)y = c(8, 5, 3, 4, 4, 6)x == y# FALSE  TRUE FALSE FALSE FALSE FALSE
y == x# FALSE TRUE FALSE FALSE FALSE FALSE
x <= y# TRUE TRUE FALSE TRUE FALSE FALSE

(2) 数学计算

x + y# 9 10 12  7 10 94
x**y# 1 3125 729 81 1296 464404086784

(3) 连接

z = paste(x,y,sep='.')# "1.8"  "5.5"  "9.3"  "3.4"  "6.4"  "88.6"
as.numeric(z) # 转换成数值型元素# 1.8 5.5 9.3 3.4 6.4 88.6
class(as.numeric(z))  # "numeric"

(4) 交集、并集、差集

intersect(x, y)  # 交集union(x, y)    # 并集setdiff(x, y)  # 谁在前就取谁里面的,在x中扣除y中有的setdiff(y, x)  # 在y中减去x中的元素

(5) %in%

在两个向量中搜索有或者没有。遍历x中的每一个元素,然后逐个与y中的元素去比较(如下图所示),如果有就返回TURE,如果比较完后还没有找到,那么就返回FALSE。

x = c(5,8,6,4,7)y = c(3,1,9,8,5)x %in% y# TRUE  TRUE FALSE FALSE FALSE
y %in% x# FALSE FALSE FALSE TRUE TRU

tips: x==y中的要求比x%in%y更加严格,x==y要求位置和值都一样,而x%in%y只要求值相等。因此x%in%y得到的元素比x==y要多。


B. 两个不等长向量的操作

当两个不等长的向量进行运算时,不仅不会报错,还能够正常进行运算,因为短的向量会发生 循环补齐 。计算后的结果长度按照最长的那个向量来算。

x = 1:9y = 4:9x == ylength(x == y)  # 9'''[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSEWarning message:In x == y : longer object length is not a multiple of shorter object length'''

因此利用循环补齐,我们就可以简化代码。

# 以下两条命名输出的结果都是一样的。虽然两个向量的长度不一样,# 但因为循环补齐的原理,第二条命令也可以得到相同的结果。paste0(rep('x', times=8), seq(2,18,2))# "x2"  "x4"  "x6"  "x8"  "x10" "x12" "x14" "x16" "x18"
paste0('x', seq(2,18,2))# "x2" "x4" "x6" "x8" "x10" "x12" "x14" "x16" "x18"

向量的筛选

# 向量的筛选x = c(3, 66, 88, 90, 87, 18, 28, 30, 58)x[x>33]x[x==88]
# 按照下标(索引)取子集x[8]x[c(1,8)]x[-1]

2.7 修改向量中的某个或者某些元素

R中的修改都要赋值,没有赋值就没有发生过。

# 修改一个元素x[2] # 3 88 88 90 87 18 28 30 58






请到「今天看啥」查看全文