我想更改 的行名cov_stats,使其包含FileName列值的子字串。我只想保留以“SRR”開頭的字串,后跟 8 位數字(例如,SRR18826803)。
cov_list <- list.files(path="./stats/", full.names=T)
cov_stats <- rbindlist(sapply(cov_list, fread, simplify=F), use.names=T, idcol="FileName")
rownames(cov_stats) <- gsub("^\.\/\SRR*_\stats.\txt", "SRR*", cov_stats[["FileName"]])
第二次嘗試
rownames(cov_stats) <- gsub("^SRR[:digit:]*", "", cov_stats[["FileName"]])
原始字串
> cov_stats[["FileName"]]
[1] "./stats/SRR18826803_stats.txt" "./stats/SRR18826804_stats.txt"
[3] "./stats/SRR18826805_stats.txt" "./stats/SRR18826806_stats.txt"
[5] "./stats/SRR18826807_stats.txt" "./stats/SRR18826808_stats.txt"
所需的子字串輸出
[1] "SRR18826803" "SRR18826804"
[3] "SRR18826805" "SRR18826806"
[5] "SRR18826807" "SRR18826808"
uj5u.com熱心網友回復:
這對你有用嗎?
library(stringr)
stringr::str_extract(cov_stats[["FileName"]], "SRR.{0,8}")
uj5u.com熱心網友回復:
您可以使用
rownames(cov_stats) <- sub("^\\./stats/(SRR\\d{8}).*", "\\1", cov_stats[["FileName"]])
請參閱正則運算式演示。詳情:
^- 字串的開始\./stats/-./stats/字串(SRR\d{8})- 第 1 組 (\1):SRR字串,然后是八位數字.*- 字串的其余部分直到結束。
請注意,sub使用 (not gsub) 是因為輸入字串中只有一個預期的替換操作(因為正則運算式匹配整個字串)。
請參閱R 演示:
cov_stats <- c("./stats/SRR18826803_stats.txt", "./stats/SRR18826804_stats.txt", "./stats/SRR18826805_stats.txt", "./stats/SRR18826806_stats.txt", "./stats/SRR18826807_stats.txt")
sub("^\\./stats/(SRR\\d{8}).*", "\\1", cov_stats)
## => [1] "SRR18826803" "SRR18826804" "SRR18826805" "SRR18826806" "SRR18826807"
等效提取stringr方法:
library(stringr)
rownames(cov_stats) <- str_extract(cov_stats[["FileName"]], "SRR\\d{8}")
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/468602.html
上一篇:Cisco啟用提示的正則運算式
下一篇:如何決議從QR掃描儀發送的資料
