字符串子集使用字符串长度的模式和范围,在 R 中



我有一个数据集,其中包含一列,其中字符串由 4 个字母 (A、T、C、G( 组成; 这些字符串的长度范围为 2-1991 个字符。我想对字符串与特定模式匹配的所有行进行子集化。例如,我想创建一个新的数据帧,该数据帧对第 17 列中有 0-10 个连续 T 的所有行进行子集化。

如果您需要更多信息,请告诉我,并感谢您的时间!

您可以筛选出找到 11 个连续 T 的所有行,其中包括具有 11 个连续 T 的行和具有更多 T 的行。

## Example vector
v = c("TTTTTTTTTTACAGATAT","TTTACACAC","TTTTTTTTTTTTTACAGAT","TTTTTTTTTTTACAG")
v[!grepl("T{11}",v)]
[1] "TTTTTTTTTTACAGATAT" "TTTACACAC"

编辑以包括要查找 11-20 个连续 T 的情况

如果要选择介于 11 和 20 T 之间的行,可以使用负后看和负前瞻来搜索 11 到 20 T 之间的一段,该行既不前后也不在 T 之后。

## Second example vector:
v2 = c("TTTTTTTTTTACAGATAT","TTTACACAC","TTTTTTTTTTTTTACAGAT","TTTTTTTTTTTACAG","ACTTTTTTTTTTTTTTTTTTTTTGCGCA")
v2[grepl("(?<!T)T{11,20}(?!T)",v2,perl=T)]
[1] "TTTTTTTTTTTTTACAGAT" "TTTTTTTTTTTACAG"   

最新更新