我有一个如下所示的数据框:
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")
}
然而,显而易见的问题是,这不会立即替换字符,而是在不会返回所需结果的步骤中。有什么建议?感谢
答案 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"