前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >biotrainee note 6

biotrainee note 6

原创
作者头像
季枫
发布2024-11-15 01:29:03
00
发布2024-11-15 01:29:03
举报
文章被收录于专栏:生信学习笔记

R语言的综合应用

推荐《R数据科学》这本书,对写代码很有帮助

专题1 玩转字符串

代码语言:r
复制
x <- "The birch canoe slid on the smooth planks."
x
### 1.检测字符串长度
str_length(x)
length(x)  ## 检测向量里有多少个元素,如果是字符型向量,即有多少对引号

### 2.字符串拆分
str_split(x," ")  ## 引号里有空格
class(str_split(x," "))  ## 拆分后数据类型是一个列表
x2 = str_split(x," ")[[1]];x2  

y = c("jimmy 150","nicker 140","tony 152")
str_split(y," ")
str_split(y," ",simplify = T)  ## 简化后拆分成了一个矩阵

str_split_i(y," ",i = 1)  ## 只取空格前面的部分(第一部分)
str_split_i(y," ",i = 2)  ## 只取空格后面的部分(第二部分)

### 3.按位置提取字符串
str_sub(x,5,9)

### 4.字符检测
str_detect(x2,"h")  ## 提取x2中含有“h”的元素,返回逻辑值
str_starts(x2,"T")  ## 提取“T”开头的元素,返回逻辑值
str_ends(x2,"e")  ## 提取“e”结尾的元素,返回逻辑值

### 5.字符串替换
x2
str_replace(x2,"o","A")  ## 将元素中的“o”替换成“A”,但如果连续遇到只替换第一个
str_replace_all(x2,"o","A")  ## 将元素中所有的“o”均替换成“A”

### 6.字符删除
x
str_remove(x," ")  ## 删除遇到的第一个空格
str_remove_all(x," ")  ## 删除所有空格

专题2 玩转数据框

代码语言:r
复制
test <- iris[c(1:2,51:52,101:102),]
rownames(test) =NULL # 去掉行名,NULL是“什么都没有”
test ## 得到一个只有6行的数据框

# arrange,数据框按照某一列排序

library(dplyr)
arrange(test, Sepal.Length) #将“Sepal.Length”列从小到大排序,并扩展到其他列,会将排序的结果返回至数据框。***注意这个函数列名不能加引号!!!***
arrange(test, desc(Sepal.Length)) #从大到小
sort(test$Sepal.Length) #只排这一列,因为取完子集后变成了一个向量

# distinct,数据框按照某一列去重复
distinct(test,Species,.keep_all = T) #去重后会保留所有的列

# mutate,数据框新增一列
mutate(test, new = Sepal.Length * Sepal.Width) #“new”为新增列的列名,其内容为这两列的乘积

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

# 连续的步骤

# 1.多次赋值,产生多个中间的变量
x1 = select(iris,-5) #去掉iris的第五列
x2 = as.matrix(x1)
x3 = head(x2,50) #取x2的前50行
pheatmap::pheatmap(x3) 

# 2. 嵌套,代码不易读
pheatmap::pheatmap(head(as.matrix(select(iris,-5)),50))

# 3.管道符号传递,简洁明了
iris %>%
  select(-5) %>%
  as.matrix() %>%
  head(50) %>% 
  pheatmap::pheatmap() # |>可以替代%>%这个管道符号,指将上一步的结果向后传递

专题3 条件和循环

If条件语句:如果。。。。就

if(一个逻辑值){一段代码} ,只有这个逻辑值为true才执行后面的代码

长脚本的管理

下载数据的代码,保留但不反复运行

长脚本的管理方式:用Rdata来衔接

为什么用Rdata而不是表格文件来衔接

if条件语句:如果。。。就。。。。否则。。。。

ifelse函数

ifelse()+str_detect(),王炸

for循环

代码语言:r
复制
for( i in 1:4){print(i)}

#批量画图
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)) #character.only要是不加的话,会把g识别成一个包名 
    install.packages(g,ask = F,update = F)
}

专题四 隐式循环

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

代码语言:r
复制
test<- iris[1:6,1:4]

apply(test, 2, mean) #对test的每一列求平均值,最终返回一串数值型的向量,并会继承每个元素的名字
apply(test, 1, sum) #对test的每一行求平均值

向量/列表的隐式循环:lapply

两个数据框的连接

注:NA为缺失值,有但是不知道

转自生信技能树

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • R语言的综合应用
  • 专题1 玩转字符串
  • 专题2 玩转数据框
  • 专题3 条件和循环
    • If条件语句:如果。。。。就
      • 长脚本的管理
        • 下载数据的代码,保留但不反复运行
          • 长脚本的管理方式:用Rdata来衔接
            • 为什么用Rdata而不是表格文件来衔接
              • if条件语句:如果。。。就。。。。否则。。。。
                • ifelse函数
                  • ifelse()+str_detect(),王炸
                    • for循环
                    • 专题四 隐式循环
                      • 矩阵/数据框的隐式循环——apply
                        • 向量/列表的隐式循环:lapply
                        • 两个数据框的连接
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档