生信技能树课程记录笔记(二)20220523-20220524

一、数据类型

 

二、向量

#####2.1.向量生成🌟#####

#(1)用 c() 结合到一起
c(2,5,6,2,9)
c("a","f","md","b")
#(2)连续的数字用冒号“:”
1:5

5:1
#(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)

注:paste和paste0的区别

引自:认真聊一聊R语言中的paste/paste0函数

paste

 

这样总结一下,sep连接的是元素间的扩展,collapse是一种元素间的折叠坍缩

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(x) #长度
unique(x) #去重复
duplicated(x) #对应元素是否重复
table(x) #重复值统计
sort(x)
sort(x,decreasing = F)
sort(x,decreasing = T)

#####2.3.对两个向量进行的操作#####

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)
paste(x,y,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)

#(4)交集、并集、差集


intersect(x,y)            ###交集默认去重复
union(x,y)
setdiff(x,y)
setdiff(y,x)

x %in% y #x的每个元素在y中存在吗(不去重)
y %in% x #y的每个元素在x中存在吗

#####2.4.向量筛选(取子集)#####

x <- 8:12    #赋值向量(8,9,10,11,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)]

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

x
#改一个元素
x[4] <- 40
x
#改多个元素
x[c(1,5)] <- c(80,20)
x


#### 2.6 简单向量作图


k1 = rnorm(12);k1
k2 = rep(c("a","b","c","d"),each = 3);k2
plot(k1)
boxplot(k1~k2)

####boxplo:箱子的中间一条线,是数据的中位数,代表了样本数据的平均水平。箱子的上下限,分别是数据的上四分位数和下四分位数。这意味着箱子包含了50%的数据。因此,箱子的宽度在一定程度上反映了数据的波动程度。

#箱线图是针对连续型变量的,解读时候重点关注平均水平、波动程度和异常值

#当箱子被压得很扁,或者有很多异常的时候,试着做对数变换

#当只有一个连续型变量时,并不适合画箱线图,直方图是更常见的选择

#箱线图最有效的使用途径是作比较,配合一个或者多个定性数据,画分组箱线图

注:!duplicated(x)比duplicate(x)更常用,输出逻辑值,前者非重复为TURE

注:R语言里的修改都要赋值,没有赋值,修改就没有发生

### 如何调整元素顺序
x <- c("A","B","C","D","E");x
x[c(2, 4, 5, 1, 3)]

scores = c(100,59,73,95,45);scores
sort(scores)#排序
scores[c(5,2,3,4,1)]#向量取子集的方式达到排序效果

scores[order(scores)]等同于scores[c(5,2,3,4,1)]

即:sort(x)效果等同于x[order(x)]

match函数:x[match(y,x)],以y为模板调整x(x,y是长度相同,顺序不同的俩个向量)

谁在外面,谁就在后面

【例】a和b是两个内容相同顺序不同的向量,才会用到match

确认a(x$file_name)与b(colnames(y))是否内容相同:

table(x$file_name%in%colnames(y))

table(colnames(y)%in%x$file_name)

m=x$file_name[match(colnames(y),x$file_name)]

m==colnames(y)

identical(m,colnames(y))#证明属于x$file_name的下标,也可以给x$ID用,因为对应

n==x$ID[match(colnames(y),x$file_name)]

原理:m与n对应,m与colnames(y)对应,n与colnames(y)对应

法二:调整x行的顺序,让他与colnames(y)对应

法三:调整y列的顺序,让他与x$file_name对应

来自R_02练习题最后
# match练习题
load("matchtest.Rdata")

一个关于match的详细讲解:

学员笔记:match函数学习 · 语雀

 转自:生信技能树

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值