R:如何将值缩短为值内的一个数字

R: how to shorten a value to just one number inside the value

Chromosome_name Start Position
CHR_HSCHR7_2_CTG6 142857940
CHR_HSCHR19LRC_PGF2_CTG3_1 54316049

我刚开始使用 R。 我有一个染色体名称的数据框,但我只想用染色体的编号替换长名称。 即 CHR_HSCHR19LRC_PGF2_CTG3_1 将是“19” 我需要用字符“HRCHR”之后的数字替换长名称 我该怎么做?

我尝试了手动输入替换值的方法: gsub(".*HSCHR19", "19", dataframe)

但是对于超过 100 个值的列表来说,这花费的时间太长了。我想找到一种自动执行此操作的方法。

您可以使用

sub('^.*CHR(\d+).*$', '\1', Chromosome_name)
#> [1] "7"  "19"

另一个可能的选项是 look-behind regex,例如

library(tidyverse)

df <- read.table(text = "Chromosome_name    Start_Position
CHR_HSCHR7_2_CTG6   142857940
CHR_HSCHR19LRC_PGF2_CTG3_1  54316049", header = TRUE)

df2 <- df %>%
  mutate(Chromosome_name = str_extract(Chromosome_name, "(?<=HSCHR)\d+"))

df2
#>   Chromosome_name Start_Position
#> 1               7      142857940
#> 2              19       54316049

reprex package (v2.0.1)

创建于 2022-03-22