Use chartr , which is created for this purpose:
> s [1] "ATCTCGGCGCGCATCGCGTACGCTACTAGC" > chartr("ATGC","TACG",s) [1] "TAGAGCCGCGCGTAGCGCATGCGATGATCG"
Just specify two string character strings and a string. Also vectorized by argument for translation:
> chartr("ATGC","TACG",c("AAAACG","TTTTT")) [1] "TTTTGC" "AAAAA"
Note. I am replacing a string representation of DNA, not a vector. To convert a vector, I would create a search map as a named vector and an index that:
> p [1] "A" "T" "C" "T" "C" "G" "G" "C" "G" "C" "G" "C" "A" "T" "C" "G" "C" "G" "T" [20] "A" "C" "G" "C" "T" "A" "C" "T" "A" "G" "C" > map=c("A"="T", "T"="A","G"="C","C"="G") > unname(map[p]) [1] "T" "A" "G" "A" "G" "C" "C" "G" "C" "G" "C" "G" "T" "A" "G" "C" "G" "C" "A" [20] "T" "G" "C" "G" "A" "T" "G" "A" "T" "C" "G"
Spacedman
source share