前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言学习笔记-Day6

R语言学习笔记-Day6

原创
作者头像
用户11190095
发布2024-07-08 23:13:22
1460
发布2024-07-08 23:13:22
举报
文章被收录于专栏:生信学习笔记

R语言的综合应用

tidyverse:集成化R包

转换-可视化-模型

1 字符串

"stringr"

str_length() str_split() str_sub()

1.1 检测字符串长度

str.length() 计算一个"字符串"内的字符数。# 空格和标点也会被计入字符数

1.2 字符串的拆分

x <- "The birch canoe slid on the smooth planks." str_split(x," ") 根据字符串内" "(空格)进行拆分

class(str_split(x," ")) 1 "list" #获得向量:[1] #str_split()可对多个字符串进行拆分,每个字符串成为一个数据框,因而成为一个列表

简化:列表->矩阵

str_split(x," ",simplify = T) x2 <- str_split(x," ")[1] #输出结果同上

#按照多个标准进行拆分:

str_split(x," |,") #按" "或","进行拆分

1.3 按位置提取字符

str_sub(x,5,9) 1 "birch" #提取第5到第9个字符

1.4 字符检测

str_detect(x2,"h") 对每个字符串内的字符进行检测,是否存在该字符(输出值为T或F)

1.5 字符的替换

str_replace(x2,"o","A") 只会对第一次出现的"o"替换成"A" #改进: str_replace_all(x2,"o","A") 对所有的"o"替换成"A"

1.6 字符删除

str_remove(x,"o") 只会对第一次出现的"o"进行删除 #改进: str_remove_all(x,"o") 对所有的"o"进行删除

1.7 补充

y = c("jimmy 150","nicker 140","tony 152") #只要人名 str_split(y," ",simplify = T),1 #去除" "和数字 str_remove_all(y," |\d")#正则表达式"\d"代表数字

1.8 大小写转换

tolower(<stringer>) #字符串内全部字母转换为小写

2 数据框

2.1 排序

arrange(test,Sepal.Length) #按照某一列对整个数据框进行排序。#整行移动 #升序排序 降序排序 arrange(test,desc(Sepal.Length)) ##列名不能加""

2.2 去重复

distinct(test,Species,.keep_all=T) #对某一列中重复的元素去重复,仅保留首次出现的元素

2.3 新增列

mutate(test, new = Sepal.Length Sepal.Width) #未赋值则数据框的列数不发生变化 或: test$new = test$Sepal.Length test$Sepal.Width #该语句运行完数据框列数即增加无需赋值

2.4 筛选列、行

select() #筛选列 filter() #筛选行

2.5 管道符号

x1 = select(iris,-5) #反选,筛选除第5列外的数据 x2 = as.matrix(x1) x3 = head(x2,50) #截取前端行(前50行) heatmap(x3) -->嵌套 heatmap(head(as.matrix(select(iris,-5)),50)) -->管道符号“%>%” iris %>% select(-5) %>% as.matrix() %>% head(50) %>% heatmap() 将上一步的数据向下传递 #管道符号快捷键“Ctrl”+“shift”+“M”

3 条件和循环*

3.1 if语句

if(1){ } 1:为一个逻辑值,不能为多个逻辑值组成的向量 #若为T,则继续执行后续语句;若为T,则不继续执行

长脚本管理方式

*1

if(F){...} #{}内所有代码被跳过 if(T){...} #{}内代码执行 #针对限速步骤 可以将限速步骤保存为.Rdata,之后加载该文件即可 #下载数据的代码,可保留但不反复运行 *2 分成多个脚本,每个脚本最后保存.Rdata,下一个脚本开头清空再加载

为什么保存为.Rdata而不是表格文件

*1 变量,自带变量名称,无需赋值,没有参数

*2 表格文件需要赋值,参数影响读取结果,不能在后续文件同等处理

*3 可保存多个变量

*4 可保存任意数据结构

if(2){ code1 }else{ code2 } 2:若逻辑值为TRUE,则执行code1,反之执行code2

多个条件仍适用

if(){ code1 }else if(){ code2 }else{ code3 }

3.2 ifelse函数

仅有三个参数

ifelse(x,yes,no) #x:逻辑值或逻辑值向量 #yes:逻辑值为T时的返回值 #no:逻辑值为F时的返回值 i = 1 ifelse(i>0,"+","-") 1 "+" 多个条件仍适用 ifelse(i>0,"+",ifelse(i<0,"-","0"))

3.3 ifelse() + str_detect()

应用示例:

sample = c("tumor1","tumor2","tumor3","normal1","normal2","normal3") k1 = str_detect(sample,"tumor") ifelse(k1,"tumor","normal") k2 = str_detect(sample,"normal") ifelse(!k2,"tumor","normal")

3.4 for循环

for(i in x){ CODE } #对x中的每个元素i执行相同的代码CODE #有几个元素则执行几次,函数本身不存在判断条件,可自行添加其它函数进行判断

e.g.1

for(i in 1:4){

  • print(i)
  • } 1 1 1 2 1 3 1 4 e.g.2

par(mfrow = c(2,2)) for(i in 1:4){

  • plot(iris,i,col = iris,5)
  • }

批量装包

pks = c("tidyr","dplyr","stringr") for(g in pks){

  • if(!require(g,character.only = T))
  • install.packages(g,ask = F,update = F) }

4 隐式循环

4.1 矩阵/数据框的隐式循环——apply

apply(X,MARGIN,FUNCTION,...) apply(test,2,mean) #1 X代表数据框/矩阵名 #2 MARGIN以数值作代表,1为行,2为列 #*3 FUNCTION为函数

#如何取出30个随机数中最大的5个数值?

x <- rnorm(30);x tail(sort(x),5)

4.2 向量/列表的隐式循环——lapply

lapply(list,FUNCTION,...) #对列表/向量中每个元素实施相同的操作 e.g. lapply(1:4,rnorm) [1] 1.13

[2]

1 0.78 1.13

[3]

1 1.81 -0.04 -0.17

[4]

1 0.04 1.22 -1.13 0.365

#输出为列表,包含四个向量

5 两个数据框的连接

5.1 交集

inner_join()

取交集

5.2 全连接

full_join() #保留全部主要信息

5.3 左连接

left_join() #保留左表主要信息

5.4 右连接

right_join() #保留右表主要信息

引用自生信技能树

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • R语言的综合应用
    • 1 字符串
      • 1.1 检测字符串长度
      • 1.2 字符串的拆分
      • 1.3 按位置提取字符
      • 1.4 字符检测
      • 1.5 字符的替换
      • 1.6 字符删除
      • 1.7 补充
      • 1.8 大小写转换
    • 2 数据框
      • 2.1 排序
      • 2.2 去重复
      • 2.3 新增列
      • 2.4 筛选列、行
      • 2.5 管道符号
    • 3 条件和循环*
      • 3.1 if语句
      • 3.2 ifelse函数
      • 3.3 ifelse() + str_detect()
      • 3.4 for循环
    • 4 隐式循环
      • 4.1 矩阵/数据框的隐式循环——apply
      • 4.2 向量/列表的隐式循环——lapply
    • 5 两个数据框的连接
      • 5.1 交集
      • 5.2 全连接
      • 5.3 左连接
      • 5.4 右连接
  • 取交集
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档