r - 如何使用 grep 进行过滤
问题描述
我有一个结构如下的分类文件:
我可以使用 grep 之类的东西(我在这里没有经验)从分类单元列中删除元素吗?
例如,而不是:
D_0__Bacteria;D_1__Fusobacteria;D_2__Fusobacteriia;D_3__Fusobacteriales;D_4__Fusobacteriaceae;D_5__Fusobacterium
我可以删除“梭杆菌”之前和之后的所有内容,所以它只说:
Fusobacterium
有些行进入物种级别,所以我需要在第 5 级识别之后删除详细信息。例如:
改变:
D_0__Bacteria;D_1__Proteobacteria;D_2__Gammaproteobacteria;D_3__Pasteurellales;D_4__Pasteurellaceae;D_5__Haemophilus;D_6__Pasteurellaceae bacterium canine oral taxon 272
至:
Haemophilus
解决方案
这应该可以解决问题:
sample <- "D_0__Bacteria;D_1__Proteobacteria;D_2__Gammaproteobacteria;D_3__Pasteurellales;D_4__Pasteurellaceae;D_5__Haemophilus;D_6__Pasteurellaceae bacterium canine oral taxon 272"
sub(".*D_5__([A-Za-z]*);.*", "\\1", sample)
# [1] "Haemophilus"
解释
我们正在匹配整个字符串并捕获 和 之间的字母D_5__
模式;
。然后我们只告诉sub()
返回捕获的模式。
推荐阅读
- android - 改造中的表单数据请求失败
- java - Android Studio 中的图像资源变得奇怪
- javascript - 正在显示 HTML 图像文本而不是图像
- apache-spark - 在 spark-submit 上获取多条消息“寻求最早并重置分区主题分区的偏移量”
- html - 如何修复文本不对齐?
- html - 将查看区域之间的图像与左右文本对齐
- python - 为什么使用函数 scipy.stats.median_absolute_deviation 计算的 MAD 与我所做的函数不同?
- r - 如何使用 Reticulate 在 R shiny App 中导入 Python 函数以供下载 App
- amazon-dynamodb - 在 DynamoDB 中创建 Web 流量日志的最佳方法是什么?
- javascript - 在 Next JS 中更新路由器查询而不触发页面更改事件