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