如何用R语言在基因序列中筛选符合特定参数的20bp有序序列?
解决基因序列筛选问题的可行方案
不用挨个写if/else,直接用R的向量化操作就能高效解决,步骤如下:
先确定所有可能的20长度子序列的起始位置
序列总长度是nchar(exon_2),能取到的起始位置范围是1到nchar(exon_2)-19,直接生成这个序列:start_positions <- 1:(nchar(exon_2) - 19)筛选符合条件的起始位置
用逻辑向量一步完成两个条件的筛选:valid_starts <- start_positions[ # 条件1:子序列第1位不是G,对应原序列的起始位置 exon_2_vector[start_positions] != "G" & # 条件2:子序列第10位是A或T,对应原序列起始位置+9的位置 exon_2_vector[start_positions + 9] %in% c("A", "T") ]提取符合要求的20长度子序列
直接用substr从原字符串提取,不用向量也能搞定,更简洁:valid_subsequences <- substr(exon_2, valid_starts, valid_starts + 19)
执行完上面的代码后,valid_subsequences里就是所有满足条件的有序子序列,直接打印就能查看结果。
内容的提问来源于stack exchange,提问作者nth1824
相关产品推荐
相关产品推荐

