为了进一步研究DNA,我试图将DNA序列转换成时间序列数据。 我目前的算法是:
for (i in 1:length(dnaSeq)){
if (dnaSeq[i]=="A"){
t[i+1]=t[i]+2
}
else if(dnaSeq[i]=="G") {
t[i+1]=t[i]+1
}
else if(dnaSeq[i]=="C") {
t[i+1]=t[i]-1
}
else if(dnaSeq[i])=="T") {
t[i+1]=t[i]-2
}
}
任何人都可以建议任何其他算法或更有效的转换算法吗?
由于
答案 0 :(得分:2)
首先让我们定义一些样本数据
set.seed(15)
dnaSeq<-sample(c("A","C","G","T"), 20, replace=TRUE)
我不确定您如何初始化t[1]
,所以我会忽略该值。但这是重新编码数据的方法
ncode <- c(A=2, G=1, C=-1, T=-2)
t2 <- cumsum(ncode[dnaSeq])
当我与你的算法比较时,我看到了
all(t[-1] == t2)
所以我相信这更紧凑,更有效率。获得数值向量后,您可以根据需要转换为时间序列。