一、向量
1、向量生成
(1)用c()逐一放到一起
(2)连续的数字用冒号“:”,注意不用加c
(3)有重复的用rep(),有规律的序列用seq(),随机数用rnom
(4) 通过组合,产生更为复杂的向量
2、对单个向量操作
(1)赋值给一个变量名
向量是由元素构成的
(2)简单数学计算
(3)根据某条件进行判断,生成逻辑值向量 ==
(4)初级统计
> x <- c(1,3,5,2)
> max(x)
[1] 5
> min(x)
[1] 1
> x <- c(1,3,5,2)
> max(x)
[1] 5
> min(x)
[1] 1
> mean(x)
[1] 2.75
> median(x)
[1] 2.5
> var(x)#方差
[1] 2.916667
> sd(x)#标准差
[1] 1.707825
> sum(x)#总和
[1] 11
> length(x)#向量的长度,即向量中元素的个数
[1] 4
> unique(x)#去重复,只保留第一次出现的
[1] 1 3 5 2
> duplicated(x)#是否重复出现过,输出是逻辑值
[1] FALSE FALSE FALSE FALSE
> !duplicated(x)#输出反结果
[1] TRUE TRUE TRUE TRUE
> table(x)#重复值统计
x
1 2 3 5
1 1 1 1
> sort(x)#从小到大排序
[1] 1 2 3 5
3、对两个向量操作
(1)逻辑值比较,生成等长的逻辑向量
> x=c(1,3,5,1)
> y=c(3,2,5,6)
> x==y
[1] FALSE FALSE TRUE FALSE
> #2.3
> x=c(1,3,5,1)
> y=c(3,2,5,6)
> x==y #对应位置比较
[1] FALSE FALSE TRUE FALSE
> x %in% y #x的元素是否在y中
[1] FALSE TRUE TRUE FALSE
(2)数学计算
> x+y
[1] 4 5 10 7
(3)连接
> paste(x,y,sep = ":")#xy一对一连接,连接符号是:
[1] "1:3" "3:2" "5:5" "1:6"
(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
(5)当向量长度不一致时用到“循环补齐”,短的补长的,可以简化代码,可以不用for循环
> paste0(rep("gene",3),1:3)
[1] "gene1" "gene2" "gene3"
> paste0("gene",1:3)
[1] "gene1" "gene2" "gene3"
4、向量筛选[ ]
(1)根据逻辑值 将TRUE对应的值挑选出来,FALSE丢弃,要求逻辑值的长度和被取值向量的长度相同
(2)根据位置 x[c(2,5)],x[2:4],[ ]中数字代表元素下标
5、修改元素
取子集+赋值
6、向量排序
x <- c("A","B","C","D","E")
y <- c("B","D","E","A","C")
(1)sort 从小到大
> sort(y)
[1] "A" "B" "C" "D" "E"
(2)rev 倒序写出
rev(x)
[1] "E" "D" "C" "B" "A"
rev(y)#倒序排列
[1] "C" "A" "E" "D" "B"
(3)order
> order(x)
[1] 1 2 3 4 5
> order(y) 返回位置是排序的
[1] 4 1 5 2 3
解释:第一小值在y的第四位A,第二小值在y的第一位D,第三小值在y的第五位C,第四小值在y的第二位D,第五小值在y的第三位E
(4)rank
> rank(x) 在组内排序再返回
[1] 1 2 3 4 5
> rank(y)
[1] 2 4 5 1 3
对y解释,y的第一个值B是整组排序第二位,第二个值D是整组排序第四位,第三个值E是整组排序第五位
(5)match
> #若想根据x的顺序排y
> match(x,y)
[1] 4 1 5 2 3#输出的是x顺序的y的下标
> y[match(x,y)]
[1] "A" "B" "C" "D" "E"#安装x的顺序排列y
解释:y的第四位是x的第一位,y的第一位是x的第二位,y的第五位是x的第三位,y的第二位是x的第四位,y的第三位是x的第五位
> match(y,x)#按照y的顺序排列x
[1] 2 4 5 1 3
> x[match(y,x)]
[1] "B" "D" "E" "A" "C"
网友评论