[英]Replace DNA nucleotide at given position in DNA sequence using for loop
在 R 数据框中,我正在尝试使用位置列号将突变列 DNA 核苷酸替换为 WT.seq。
以下是我的数据框
transcript position ref mutation type WT.seq
1 trx1 5 A G substitution ATAAAA
2 trx2 3 C A substitution CCCCCC
3 trx3 7 T C substitution AAAAAATGG
数据框中的预期输出
transcript position ref mutation type WT.seq
1 trx1 5 A G substitution ATAAGA
2 trx2 3 C A substitution CCACCC
3 trx3 7 T C substitution AAAAAACGG
解释
例如,在给定的输出数据帧WT.seq column
中包含 DNA 序列,并且在 WT.seq 的第一行中存在 DNA 序列ATAAAA
并且我必须替换突变列 DNA 核苷酸G(mutation column,1st row)
在5th position of ATAAAA
G at 5th position
后,它将是ATAAGA
。 这个位置编号是从position column,1st row
给出的。 我必须对数据框中的所有行执行此操作。 我的数据框包含数千行。
在上面的输出中,我使用以下代码为第一行完成了它。
DNA_seq <- read.table("sequences.txt",sep = "\t",header = T)
df<- as.data.frame(DNA_seq)
substring(df[1,6], first=df[1,2]) <- df[1,4]
我想在剩余的行上运行 for 循环,以便在位置列号的帮助下在 WT.seq 列中完成所有突变核苷酸替换
您可以strsplit
, replace
位置替换为Map
中的突变并重新paste
在一起。
transform(dat, WT.mut=Map(replace, strsplit(WT.seq, ''), position, mutation) |>
sapply(paste, collapse=''))
# transcript position ref mutation type WT.seq WT.mut
# 1 trx1 5 A G substitution ATAAAA ATAAGA
# 2 trx2 3 C A substitution CCCCCC CCACCC
# 3 trx3 7 T C substitution AAAAAATGG AAAAAACGG
我使用了一个额外的列来演示,只需将WT.mut=
替换为WT.seq=
即可覆盖。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.