R如何reverse一個字符串

我們知道在R里面顛倒一個向量用rev函數(shù),但是這個函數(shù)貌似對字符串不起作用。

那么今天小編就來跟大家一起掰次掰次如何在R里面reverse一個字符串。那么顛倒一個字符串究竟有什么用呢?除了酷炫以外。當(dāng)然是有用的,例如我們手上如果有一個DNA序列,我們?nèi)绾稳カ@取它的反向互補序列。今天我們先來解決反向的問題,下一次我們在來解決互補的問題。下面給大家介紹5種不同的方法。

假如現(xiàn)在我們手上有這么一條DNA序列,我們需要取它的反向序列

dna='ATTTAGCGATGCGGCTATGCTATCGGA'

方法1. strsplit分割成字符串向量,rev之后再合并起來

我們用proc.time()來計算以下每種方法所用的時間

start <- proc.time()
splits <- strsplit(dna, "")[[1]]
reversed <- rev(splits)
final_result <- paste(reversed, collapse = "")
final_result
end <- proc.time()
print(end - start)

方法2. 使用R內(nèi)置的utf8ToInt函數(shù)將字符串轉(zhuǎn)換成一個整數(shù)的數(shù)值向量,rev之后再轉(zhuǎn)換成字符串

start <- proc.time()
final_result <- intToUtf8(rev(utf8ToInt(dna)))
final_result
end <- proc.time()
print(end - start)

方法3. 使用stringi包

library(stringi)
start <- proc.time()
final_result <- stri_reverse(dna)
final_result
end <- proc.time()
print(end - start)

方法4. 使用IRanges包

library(IRanges)
start <- proc.time()
final_result <- IRanges::reverse(dna)
final_result
end <- proc.time()
print(end - start)

方法5. 使用Biostrings包

我們前面在講?R如何將fasta轉(zhuǎn)成dataframe的時候就使用過Biostrings這個R包。

library(Biostrings)
start <- proc.time()
final_result <- Biostrings::reverse(dna)
final_result
end <- proc.time()
print(end - start)

從上面的結(jié)果我們可以看出,方法3使用stringi包的速度最快。俗話說,條條大路通羅馬,不管白貓還是黑貓,抓住老鼠就是好貓。

參考資料:

?R如何將fasta轉(zhuǎn)成dataframe

?R如何reverse一個字符串

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容