Удаление символов в заголовках столбцов после "." - PullRequest
1 голос
/ 16 января 2020

У меня есть вопрос, аналогичный заданному здесь: r Удалите части имени столбца после определенных символов , однако у меня есть небольшая морщина. Мои заголовки столбцов имеют форматы sich, такие как ENSG00000124564.16 и ENSG00000257509.1, однако я хочу удалить все символы после .

. Я не могу просто удалить последние x символов, так как заголовки столбцов различаются по количеству символов после символа .

Если я следую команде sub() в предыдущем вопросе, как здесь: sub(".*", "", colnames(dataset[6:ncol(dataset)])), это ничего не делает. Я предполагаю, что в обычной команде символ . используется для разделения искомой строки, а символ * представляет что-либо после нее.

Как изменить код для использования . как символ поиска строки? Это, наверное, очень простой вопрос.

Ответы [ 2 ]

5 голосов
/ 16 января 2020

Вы можете избежать периода, как этот \\.:

x <- "ENSG00000124564.16"
sub("\\..*", "", x)
#[1] "ENSG00000124564"

обновление:

## if you have list of strings it works
x <- c("ENSG00000124564.16",  "ENSG00000257509.1")
sub("\\..*", "", x)
# [1] "ENSG00000124564" "ENSG00000257509"

## if you want to try it to change the column names it works
df <- data.frame(ENSG00000124564.16 = c(1, 2, 3), ENSG00000257509.1 = c(1, 1, 1))
names(df) <- sub("\\..*", "", names(df))
#  ENSG00000124564 ENSG00000257509
#1               1               1
#2               2               1
#3               3               1
3 голосов
/ 16 января 2020

с \\. вы указываете точку. С . вы указываете любой тип персонажа. С .* вы указываете любой тип символа любое количество раз. С $ вы указываете, что это конец строки. Таким образом, вы можете сложить их так:

df <- data.frame(ENSG00000124564.16=c(1,2,3), ENSG00000257509.1=c(4,5,6))
df

colnames(df) <- gsub("\\..*$", "", colnames(df))
df

edit: sm925 был слишком быстр для моего медленного набора текста:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...