Подтвердить что ты не робот

Удалите часть строки после "."

Это простой вопрос, но я не вижу, что я делаю неправильно. Я работаю в 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] "" "" "" "" "" ""

Но, как вы можете видеть, это не правильный путь для этой переменной. Может ли кто-нибудь помочь мне с этим?

4b9b3361

Ответ 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"