首页 > 解决方案 > 如何使用 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

标签: rfiltering

解决方案


这应该可以解决问题:

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()返回捕获的模式。


推荐阅读