R 从背景(DNA序列)中排除特定字符串(DNA字符串)和洗牌(即从正DNA序列生成负数集)

R 从背景(DNA序列)中排除特定字符串(DNA字符串)和洗牌(即从正DNA序列生成负数集),r,string,replace,dna-sequence,R,String,Replace,Dna Sequence,我有一个包含DNA字符串的文件。我想从正数据生成负数据集。一种方法是从我的数据中排除一些特定的序列,然后洗牌数据。 假设我的数据集是一个列表: 1) DNAlst: ACTATACGCTAATATCGATCTACGTACGATCG CAGCAGCAGCGAGACTATCCTACCGCA ATATCGATCGCAAAAATCG 我想排除这些序列: ATAT,CGCA 因此,结果将是: ACTATACGCTACGATCTACGTACGATCG CAGCAGCAGCGAGACTATCCTAC CG

我有一个包含DNA字符串的文件。我想从正数据生成负数据集。一种方法是从我的数据中排除一些特定的序列,然后洗牌数据。
假设我的数据集是一个列表:

1)
DNAlst:
ACTATACGCTAATATCGATCTACGTACGATCG
CAGCAGCAGCGAGACTATCCTACCGCA
ATATCGATCGCAAAAATCG
我想排除这些序列:

ATAT,CGCA
因此,结果将是:

ACTATACGCTACGATCTACGTACGATCG
CAGCAGCAGCGAGACTATCCTAC
CGATAAAAATCG
2)
然后我想按特定的长度(例如5)洗牌我的序列。这意味着将DNA串按长度为5的部分(5-mer)洗牌。例如:

ATATACGCGAAAAATCTC=>5次洗牌后的结果==>AAAAA CTCCGCAATATA


如果您能告诉我如何在R中执行此操作,我将不胜感激。

使用
stringi
软件包:

dna <- c("ACTATACGCTAATATCGATCTACGTACGATCG","CAGCAGCAGCGAGACTATCCTACCGCA","ATATCGATCGCAAAAATCG")

# stri_replace function replaces strings ATAT and CGCA for empty string
stri_replace_all_regex(dna, "ATAT|CGCA","")
长度为5的
seq
生成的索引中的
stri_sub
字符串

y <- stri_sub(dna[1], seq(from=1,to=stri_length(dna[1]),by=5), length = 5)
y
## [1] "ACTAT" "ACGCT" "AATAT" "CGATC" "TACGT" "ACGAT" "CG"   

一个简单的
gsub
可以完成第一部分,像
gsub(“ATAT | CGCA”,“cagcagctctctacgca”)
虽然我不确定您的数据结构是什么
dput(DNAlst)
可能有用
y <- stri_sub(dna[1], seq(from=1,to=stri_length(dna[1]),by=5), length = 5)
y
## [1] "ACTAT" "ACGCT" "AATAT" "CGATC" "TACGT" "ACGAT" "CG"   
stri_flatten(y[sample(length(y))])
## [1] "TACGTACGATCGATCAATATACGCTACTATCG"