【发布时间】:2020-02-27 19:31:26
【问题描述】:
如果我有一个包含一列序列(例如“GGGAAAGGGAAT”)的表,我如何选择在单个序列中多次出现“GGG”的行。我有一个包含数百个序列的表。我有使用 RStudio 中的过滤器来识别单个单词出现的序列(例如“GGG”);但是,我很难识别多个单词出现的序列。有没有办法做到这一点?
【问题讨论】:
如果我有一个包含一列序列(例如“GGGAAAGGGAAT”)的表,我如何选择在单个序列中多次出现“GGG”的行。我有一个包含数百个序列的表。我有使用 RStudio 中的过滤器来识别单个单词出现的序列(例如“GGG”);但是,我很难识别多个单词出现的序列。有没有办法做到这一点?
【问题讨论】:
给你。很高兴您没有使用 Excel 进行此分析;)
# function to generate gene sequences
gene_gen <- function() return(paste0(sample(x = c('A','G','T'), size = 12, replace = T),collapse=''))
# lets create a data table with a thousand of those
df = data.table(replicate(1000,gene_gen()))
# select lines using a regular expression looking for two instances of GGG in the same sequence
df[regexpr('GGG.*GGG',V1)==1]
#Result is
V1
1: GGGGGAGGGGAG
2: GGGTATTGGGGT
3: GGGGAGAAGGGT
4: GGGTATGGGGTA
5: GGGTGTGGGAGG
6: GGGAGGGTGTTG
这里的关键是使用正则表达式。
regexpr('GGG.*GGG', sequence_string) 查找 3 个 GGG 字符,然后查找任何 (.) 零次或多次 (*),然后查找 3 个后续 GGG 字符。
有许多在线正则表达式测试器网站可以帮助您进行培训。
【讨论】: