首页 > 解决方案 > 删除“.”之后的列标题中的字符

问题描述

我有一个与此处提出的问题类似的问题:r 在某些字符之后删除部分列名,但是我有一点皱纹。我的专栏标题的格式为 ENSG00000124564.16 和 ENSG00000257509.1,但是我想删除后面的所有字符.

我不能只删除最后的 x 个字符,因为列标题在.符号后的字符数上有所不同

如果我按照sub()上一个问题中的命令,比如这里:sub(".*", "", colnames(dataset[6:ncol(dataset)])),它什么也不做。我假设是因为在正常命令中,该.符号用于分隔您正在搜索的字符串和*表示其后任何内容的符号。

如何更改代码以.用作字符串搜索符号?这可能是一个非常简单的问题。

标签: r

解决方案


You can escape period like this \\.:

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

update:

## 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

推荐阅读