对单个向量进行的操作
(1)赋值给一个变量名,用“=”或“<-”
> x=c(1,2,3,4,5,6) #()中的每个数为向量的元素
> x
[1] 1 2 3 4 5 6
> x<-c(1,2,3,4,5,6) #<-的快捷键为Alt加-
> x
[1] 1 2 3 4 5 6
(2)简单数学计算
> x+10
[1] 11 12 13 14 15 16
>sqrt(x) #求开方
(3)根据某条件进行判断,生成逻辑值向量
> x>5
[1] FALSE FALSE FALSE FALSE FALSE TRUE
> x==3 #==用来判断是否相等
[1] FALSE FALSE TRUE FALSE FALSE FALSE
> x!=3 #!=用来判断是否不相等
[1] TRUE TRUE FALSE TRUE TRUE TRUE
(4)初级统计
>x<-c(1,2,2,3,5,6,5)
>max(x) #最大值
>min(x) #最小值
>mean(x) #平均值
>median(x) #中位数
>var(x) #方差
>sd(x) #标准差
>sum(x) #求和
> length(x) #长度,指向量里的长度个数
[1] 7
> unique(x) #去重复,只保留第一次出现的元素
[1] 1 2 3 5 6
> duplicated(x) #查重,判断哪个元素重复出现,返回与 x 长度相等的逻辑值向量
[1] FALSE FALSE TRUE FALSE FALSE FALSE TRUE
> table(x) # 重复值统计
x
1 2 3 5 6
1 2 1 2 1
> sort(x) #排序,默认从小到大排。从大到小排需加(decreasing=T)
[1] 1 2 2 3 5 5 6
对两个向量进行的操作
> x<-c(1,3,5,1)
> y<-c(3,2,5,6)
(1)逻辑比较,生成等长的逻辑向量
> x==y #判断x和对应位置的y是否相等(不与其他元素比较)
[1] FALSE FALSE TRUE FALSE
> x%in%y #判断x的每个元素在y中是否存在(返回值的个数取决于x)
[1] FALSE TRUE TRUE FALSE
> y%in%x #判断y的每个元素在x中是否存在(返回值的个数取决于y)
[1] TRUE FALSE TRUE FALSE
(2)数学计算
> x+y
[1] 4 5 10 7
(3)连接
> paste(x,y,sep=":")
[1] "1:3" "3:2" "5:5" "1:6"
> paste(x,y)
[1] "1 3" "3 2" "5 5" "1 6"
> paste0(x,y) #paste(x,y,sep="")等同于paste0(x,y)
[1] "13" "32" "55" "16"
(4)交集、并集、差集
> intersect(x,y) #交集,默认去重复
[1] 3 5
> union(x,y) #并集,默认去重复
[1] 1 3 5 2 6
> setdiff(x,y) #差集,在x里存在,在y里不存在
[1] 1
> setdiff(y, x) #差集,在y里存在,在x里不存在
[1] 2 6
当两个向量长度不一样 , “循环补齐”
> x<-c(1,3,5,6,2)
> y<-c(3,2,5)
> x==y #短的循环补齐长的
[1] FALSE FALSE TRUE FALSE TRUE
循环补齐
利用循环补齐简化代码
> paste0(rep("gene",3), 1:3)
[1] "gene1" "gene2" "gene3"
> paste0("gene", 1:3)
[1] "gene1" "gene2" "gene3"
向量筛选(取子集)将TRUE对应的值挑选出来,FALSE对应的舍弃
1.根据逻辑值,[ ]里应能单独运行,将TRUE对应的值能挑选,即具有逻辑值(如x<7)
> x<-c(1,3,5,7,8)
> x>5
[1] FALSE FALSE FALSE TRUE TRUE
> x[x>5]
[1] 7 8
2.根据位置,[ ]里是由x的下标组成的向量
> x[4]
[1] 7
> x[2:4]
[1] 3 5 7
修改向量中的某个、某些元素
> x<-1:10
> x
[1] 1 2 3 4 5 6 7 8 9 10
> x[5]<-11 #取子集加赋值
> x
[1] 1 2 3 4 11 6 7 8 9 10
向量作图
> k1<-rnorm(12)
> k1
[1] 0.97345359 0.01859987 0.23110057 0.21045904 -0.06404520 -1.15701867
[7] 1.02837091 -1.96591605 0.09879417 -0.41808639 -0.45841582 0.45912581
> k2<-rep(c("a","b","c","d"),each=3)
> k2
[1] "a" "a" "a" "b" "b" "b" "c" "c" "c" "d" "d" "d"
> plot(k1)
> boxplot(k1~k2)
向量匹配排序-match
> x<-c("A","B","C","D","E")
> y<-c("B","D","E","A","C")
> match(x,y) #根据x的模板调整y的顺序,返回值是y的下标
[1] 4 1 5 2 3
> y[match(x,y)] #谁在外面,谁就在后面
[1] "A" "B" "C" "D" "E"
网友评论