Удалите часть строки после "."
Это простой вопрос, но я не вижу, что я делаю неправильно.
Я работаю в R с номерами доступа, такими как переменная a
>a <- c("NM_020506.1","NM_020519.1","NM_001030297.2","NM_010281.2","NM_011419.3", "NM_053155.2")
Чтобы получить информацию из пакета biomart, мне нужно удалить .1 и т.д. после номеров доступа. Обычно я делаю это с помощью этого кода:
> b <- sub("..*","",a)
>[1] "" "" "" "" "" ""
Но, как вы можете видеть, это не правильный путь для этой переменной. Может ли кто-нибудь помочь мне с этим?
Ответы
Ответ 1
Вам просто нужно избежать периода:
a <- c("NM_020506.1","NM_020519.1","NM_001030297.2","NM_010281.2","NM_011419.3", "NM_053155.2")
gsub("\\..*","",a)
[1] "NM_020506" "NM_020519" "NM_001030297" "NM_010281" "NM_011419" "NM_053155"
Ответ 2
Вы можете сделать:
sub("*\\.[0-9]", "", a)
или
library(stringr)
str_sub(a, start=1, end=-3)
Ответ 3
Мы можем притворяться, что они являются именами файлов и удаляют расширения:
tools::file_path_sans_ext(a)
# [1] "NM_020506" "NM_020519" "NM_001030297" "NM_010281" "NM_011419" "NM_053155"