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

时间:2015-07-18 09:11:20

标签: regex r

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

    USequence
# 1 GATCAGATC
# 2 ATCAGAC

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

    USequence
# 1 CTAGTCTAG
# 2 TAGTCTG

这就是我现在所拥有的,该函数接受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")
}

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

1 个答案:

答案 0 :(得分:6)

您可以使用chartr

df1$USequence <- chartr('GATC', 'CTAG', df1$USequence)
df1$USequence 
#[1] "CTAGTCTAG" "TAGTCTG"  

或者

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