所有资料来源于生信技能树
-
3-2-1向量精讲
向量(Vector)生成
> 用 c() 结合到一起
c(2,5,6,2,9)
c("a","f","md","b")
> 连续的数字用冒号“:”
1:5
> 有重复的用rep(),有规律的序列用seq(),随机数用rnorm()
rep("gene",times=3)
seq(from=3,to=21,by=3)#从3开始,21结束,每3个数取值
rnorm(n=3)
> 通过组合,产生更为复杂的向量
paste0(rep("gene",times=3),1:3)
paste0(rep("gene",times=5),1:3)
问题:paste和paste0的区别
对单个向量操作
####2.2.对单个向量进行的操作####
#(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()#向量的长度,指的是向量的个数
unique()#去除向量中的重复值,留下向量中元素第一次出现的,其余出现的时候会去除
duplicated()#返回逻辑值,向量中的元素是否重复
!duplicated(x)#返回逻辑值,T变F,F变T
table()#统计重复值
sort(X)#按照顺序排序,默认从小到大
sort(X,decreasing = T)#按照从大到小顺序排序
对两个向量操作
#####2.3.对两个向量进行的操作#####
x = c(1,3,5,1)
y = c(3,2,5,6)
'#(1)逻辑比较,生成等长的逻辑向量'
x == y
'x %in% y #x中的元素在y中吗'
'#(2)数学计算'
x + y
'#(3)“连接“'
paste(x,y,sep=":")
#(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!
#循环补齐
'总是短的向量补补齐长的向量'
#利用循环补齐简化代码
paste0(rep("gene",3),1:3)
paste0("gene",1:3)
==和%in%的区别
不要面子只要栗子——花花
万物皆可赋值——花花
懒惰,就是这样——花花