1 向量的生成方式有几种
#(1)用c()逐一放到一起
m <- c(1,4,5,7)
m
[1] 1 4 5 7
#(2)连续的数字用冒号”:”
1:10
#(3)有重复的用rep(),有规律的序列用seq(),随机数用rnorm
rnorm(n=6)
[1] -1.1194494 -2.2245769 1.1971504 -1.4088681
[5] 0.7447397 -1.1469720
#(4)通过组合,产生更为复杂的向量。
paste0(rep("sample"),seq(from = 5, to = 30, by = 5))
[1] "sample5" "sample10" "sample15" "sample20"
[5] "sample25" "sample30"
2 数据类型转换的优先顺序
c(TRUE,FALSE,4)
#[1] 1 0 4
c(1,"a")
#[1] "1" "a"
c(TRUE,"a")
#[1] "TRUE" "a"
3 向量操作
3.1 对单个向量进行的操作
(1)赋值给一个变量名
m <- c(1,4,5,7)#赋值符号,快捷键Alt 加-
(2)简单数学计算
log(m)
(3)根据某条件进行判断,生成逻辑值向量
m==4
(4)初级数学统计
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
var(x) #方差
sd(x) #标准差
sum(x) #总和
(4)长度,去重复,重复值统计,排序操作
length(x) #长度
unique(x) #去重复
duplicated(x)
table(x) #重复值统计
sort(x) sort(x,decreasing=T)
3.2 对两个向量的操作
(1)逻辑比较,生成等长的逻辑向量
x == y#### x 和对应位置的y 相等吗?循环短的,得到最长的那个
x %in% y #x的元素是否在y中;X长度可以任意
x <- c(1,3,5,6,2,9)
y <- c(2,3,4)
x %in% y #生成的向量个数是和前者相等的
#[1] FALSE TRUE FALSE FALSE TRUE FALSE
y%in%x
#[1] TRUE TRUE FALSE
(2)数学计算
x/y
#[1] 0.5000000 1.0000000 1.2500000 3.0000000 0.6666667 2.2500000
(3)连接
paste(x,y,sep=":") #分割符号
[1] "1:2" "3:3" "5:4" "6:2" "2:3" "9:4"
(4)交集、并集、差集
intersect(x,y)
#[1] 3 2
union(x,y)
#[1] 1 3 5 6 2 9 4
setdiff(x,y)
#[1] 1 5 6 9
setdiff(y,x)#
#[1] 4
4 向量筛选(取子集)
4.1 [ ]:将TRUE对应的值挑选出来,FALSE丢弃
x <- 1:50
x[x<7]
4.2 向量筛选(取子集) [ ]:根据位置
x[8]
按照逻辑值:中括号里是与x等长的逻辑值向量
按照位置:中括号里是由x的下标组成的向量
5 如何修改向量中的某个/某些元素?
x[8] <- 99
x[8]
#[1] 99
6 向量匹配排序-match
match(x, table, nomatch = NA_integer_, incomparables = NULL)
match: An integer vector giving the position in table of the first match if there is a match, otherwise nomatch.
返回的是x在table中的位置整数---A vector of the same length as x.
Gene number does not correlate with Complexity
x <- c("A","B","C","D","E")
y <- c("B","D","E","A","C")
match(x,y)
#[1] 4 1 5 2 3
y[match(x,y)] #y按照x的顺序重新排序
#[1] "A" "B" "C" "D" "E"
https://mp.weixin.qq.com/s/2eJPrT7lz562vX0ij4gfVg
所有来源和记录来自生信菜鸟团,不产生任何利益冲突,笔记-自己理解所用
网友评论