查看原文
其他

tstrsplit 加速你的字符串分割

JunJunLab 老俊俊的生信笔记 2022-08-15

没关注?伸出手指点这里---

1引言

在用 R 语言处理大数据表格时, 传统的 data.frame 及其它基础函数会让你分析变得很慢,在完成目的的基础上,为了加速分析, 往往需要回过头来对原来的代码进行优化, 使用 *apply 函数, 使用 data.table 等等操作。

今天分分享一个快速分割字符串的函数,是 data.table 里面的。

2分割

数据:

假如我们需要对第一列分割并取第一个元素,然后添加一个新列。

使用基础函数 strsplit 分割提取:

system.time({all_df$test <- sapply(strsplit(as.character(all_df$rname),split = '_'),'[',1) })
# 用户  系统  流逝
# 98.92  0.28 99.20

花了 98s。

使用 stringr 包的 str_split 函数:

system.time({all_df$test <- sapply(str_split(as.character(all_df$rname),'_'),'[',1) })
# 用户  系统  流逝
# 16.25  0.03 16.28

花了 16.25s。

使用 data.table 包的 tstrsplit 函数:

system.time({all_df[, c("test") := tstrsplit(rname, "_", fixed=TRUE)[1]]})
# 用户 系统 流逝
# 4.42 0.00 4.42

花了 4.42s。

3结尾

dplyr 包中的很多函数对于大数据来说会比较慢,比如 group_by + summarise 操作就会很慢,考虑使用 data.table 的会快很多,总之,值得学习!

# summary
df_frame0 %>% select(type,rname,codon_pos) %>%
  group_by(type,rname,codon_pos) %>%
  summarise(count = n()) -> codon_density

# fast way
codon_density <- df_frame0[,.N,by = .(type,rname,codon_pos)]




  老俊俊生信交流群 ,QQ,


老俊俊微信:


知识星球:



今天的分享就到这里了,敬请期待下一篇!

最后欢迎大家分享转发,您的点赞是对我的鼓励肯定

如果觉得对您帮助很大,赏杯快乐水喝喝吧!



  






ggplot 绘制分半小提琴图+统计检验

Ribo-seq 可视化进阶

PCA 主成分分析详解

ggplot 绘制旋转的相关性图

Rsamtools 批量处理 bam 文件

GSEApy 做富集分析及可视化

pysam 读取 bam 文件准备 Ribo-seq 质控数据

sankeywheel 绘制唯美桑基图

ggplot 绘制小提琴图+箱线图+统计检验

Ribo-seq 数据上游分析

◀...

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存