R:一次性替换字符串中的值

alk*_*lki 1 regex r

我有一个如下所示的数据框:

    USequence
# 1 GATCAGATC
# 2 ATCAGAC
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个函数,用C代替所有的G,用T代替A,用G代替C,用A代替T:

    USequence
# 1 CTAGTCTAG
# 2 TAGTCTG
Run Code Online (Sandbox Code Playgroud)

这就是我现在所拥有的,该函数接受k,一个带有名为USequence的列的数据框.

conjugator <- function(k) {
  k$USequence <- str_replace_all(k$USequence,"A","T")
  k$USequence <- str_replace_all(k$USequence,"T","A")
  k$USequence <- str_replace_all(k$USequence,"G","C")
  k$USequence <- str_replace_all(k$USequence,"C","G")
}
Run Code Online (Sandbox Code Playgroud)

然而,显而易见的问题是,这不会立即替换字符,而是在不会返回所需结果的步骤中.有什么建议?谢谢

akr*_*run 6

你可以用 chartr

df1$USequence <- chartr('GATC', 'CTAG', df1$USequence)
df1$USequence 
#[1] "CTAGTCTAG" "TAGTCTG"  
Run Code Online (Sandbox Code Playgroud)

要么

library(gsubfn)
gsubfn('[GATC]', list(G='C', A='T', T='A', C='G'), df1$USequence)
#[1] "CTAGTCTAG" "TAGTCTG"  
Run Code Online (Sandbox Code Playgroud)