tstrsplit 加速你的字符串分割
测试开头





测试结尾

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


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群,欢迎加入下载。
群二维码:
老俊俊微信:
知识星球:
所以今天你学习了吗?
今天的分享就到这里了,敬请期待下一篇!
最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!
如果觉得对您帮助很大,赏杯快乐水喝喝吧!
往期回顾
◀pysam 读取 bam 文件准备 Ribo–seq 质控数据
◀...
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!