前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从零开始的异世界生信学习 R语言部分 01 数据结构之向量

从零开始的异世界生信学习 R语言部分 01 数据结构之向量

原创
作者头像
用户10361520
发布2023-03-03 13:50:33
3590
发布2023-03-03 13:50:33
举报
文章被收录于专栏:从头开始的生信学习

数据结构

1.向量

数据框单独的一列是向量,视为一个整体;一个向量只能有一种数据类型,可以有重复值。

###1.1 向量的生成

代码语言:javascript
复制
#(1)用 c() 结合到一起
c(2,5,6,2,9) 
c("a","f","md","b")
#(2)连续的数字用冒号“:” 
1:5
#(3)有重复的用rep(),有规律的序列用seq(),随机数用rnorm()
rep("x",times=3)  
seq(from=3,to=21,by=3)
rnorm(n=3)
#(4)通过组合,产生更为复杂的向量。
paste0(rep("x",times=3),1:3)

rep()生成重复值的函数

seq ()

rnorm () 生成随机数,符合正态分布

paste0() 函数,将前后两个向量联合在一起

tips:数据类型转换的优先顺序

数据类型转换
数据类型转换

生信技能树

1.2对单个向量的进行的操作

代码语言:javascript
复制
#(1)赋值给一个变量名
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) #长度,输出向量中元素的个数
unique(x) #去重复,一个向量中元素,从左向右,第一次出现的叫没重复,第二次或多次出现的,叫重复
duplicated(x) #判断向量中对应元素是否重复,注意逻辑值取反:!duplicated(x)
table(x) #重复值统计
sort(x)#排序,默认值为从小到大的顺序排序 
sort(x,decreasing = F)
sort(x,decreasing = T)

tips:逻辑值运算

逻辑值运算
逻辑值运算

对两个向量的操作

代码语言:javascript
复制
x = c(1,3,5,1)
y = c(3,2,5,6)
#(1)比较运算,生成等长的逻辑向量
x == y 
y == x
#(2)数学计算
x + y
#(3)连接
paste(x,y,sep=",")

#paste与paste0的区别
paste(x,y)

paste0(x,y) #paste0没有分隔符号
paste(x,y,sep = "") #sep表示分隔符号

paste(x,y,sep = ",")
#当两个向量长度不一致
x = c(1,3,5,6,2)
y = c(3,2,5)
x == y # 啊!warning!
#循环补齐

#利用循环补齐简化代码
paste0(rep("x",3),1:3)
paste0("x",1:3) #paste0中连接的是两个向量,'X'可以看做是只有一个元素X的向量

#(4)交集、并集、差集
intersect(x,y) #交集
union(x,y) # 并集,取合集的时候会去重复
setdiff(x,y)  #表示在X向量存在,Y中不存在的元素
setdiff(y,x)  #结果与上一个不同

#重点:%in% #x中的每个元素在y中是否存在
x %in% y #x的每个元素在y中存在吗,比较的是x中的每个元素都在y中所有的元素进行比较
y %in% x #y的每个元素在x中存在吗
x==y与x%in%y的区别
x==y与x%in%y的区别
记忆卡片
记忆卡片

向量的筛选(取子集)

[ ] :将TRUE对应的值挑选出来,FALSE丢弃或者是一个有x下标组成的向量

代码语言:javascript
复制
x <- 8:12
#根据逻辑值取子集
x[x==10] #被取子集的向量在外面,[]内部为选取条件
x[x<12]
x[x %in% c(9,13)]
#根据位置取子集
#向量中的元素存在下标,从左到右表示元素的位置
x[4]
x[2:4]
x[c(1,5)]
x[-4] #去掉第四元素
x[-(2:4)] #反选,数字前面是-,!是给逻辑值运用
元素的下标,从1开始
元素的下标,从1开始
取子集的语法
取子集的语法

修改向量中的某个/某些元素:取子集+赋值

代码语言:javascript
复制
#改一个元素
x[4] <- 40
x
#改多个元素
x[c(1,5)] <- c(80,20)
x

简单向量作图

代码语言:javascript
复制
k1 = rnorm(12);k1
k2 = rep(c("a","b","c","d"),each = 3);k2
plot(k1)
boxplot(k1~k2) 
k1~plot
k1~plot
k1,k2~boxplot
k1,k2~boxplot

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据结构
    • 1.向量
      • 1.2对单个向量的进行的操作
      • 对两个向量的操作
      • 向量的筛选(取子集)
      • 修改向量中的某个/某些元素:取子集+赋值
      • 简单向量作图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档