[英]how to edit rownames in R using sub or gsub command
我有一个基因表达文件,它的行名是这样的: GTEX.1117F.3226.SM.5N9CT在此处输入图像描述我想编辑它的行名如下:
GTEX-1117F 等等。
我使用了这些命令:
row.names(gene_exp_transpose) <- data
gsub(".","-",row.names(gene_exp_transpose)) #this just gives ----- to all the rownames data
row.names(gene_exp) substr(data, 0,5) ## but for the last rows, it has 4 character instead of 5.
我们可以这样做:
tibble
包中带有rownames_to_colum
的列的行名
使用正则表达式: 'sub('^([^.]+.[^.]+).*', '\\1'
删除第二个点之后的所有内容。
替换.
通过-
回到行名
library(tibble)
library(dplyr)
df %>%
rownames_to_column("X") %>%
mutate(X = sub('^([^.]+.[^.]+).*', '\\1', X),
X = sub('\\.', '-', X)) %>%
column_to_rownames("X")
输出:
ENSG00000223972.5 ENSG00000227232.5 ENSG00000278267.1 ENSG00000243485.5
GTEX-1117F 1.0705061 319.01082 0.0000000 0.0000000
GTEX-111FC 0.0000000 137.62750 0.8192113 1.6384227
GTEX-1128S 0.9312597 98.71353 0.0000000 0.9312597
GTEX-117XS 0.0000000 140.96666 0.0000000 0.7661232
GTEX-1192X 0.9374262 139.67650 0.0000000 0.9374262
数据:
structure(list(ENSG00000223972.5 = c(1.0705061, 0, 0.9312597,
0, 0.9374262), ENSG00000227232.5 = c(319.01082, 137.6275, 98.71353,
140.96666, 139.6765), ENSG00000278267.1 = c(0, 0.8192113, 0,
0, 0), ENSG00000243485.5 = c(0, 1.6384227, 0.9312597, 0.7661232,
0.9374262)), class = "data.frame", row.names = c("GTEX.1117F.3226.SM.5N9CT",
"GTEX.111FC.3126.SM.5GZZ2", "GTEX.1128S.2726.SM.5H12C", "GTEX.117XS.3026.SM.5N9CA",
"GTEX.1192X.3126.SM.5N9BY"))
基础 R 解决方案。 从TarJae 的答案中借来的数据。
在第一条指令中,正则表达式与 TarJae 的几乎相同,但有两个不同之处:
然后唯一的句点被一个破折号"_"
代替。
row.names(df) <- sub('^([^.]+\\.[^.]+).*$', '\\1', row.names(df))
row.names(df) <- sub('\\.', '-', row.names(df))
row.names(df)
#> [1] "GTEX-1117F" "GTEX-111FC" "GTEX-1128S" "GTEX-117XS" "GTEX-1192X"
由reprex 包于 2022-07-02 创建 (v2.0.1)
onyambu 的评论使上述代码成为单行代码。
sub('^([^.]+)\\.([^.]+).*', '\\1-\\2', rownames(df))
#> [1] "GTEX-1117F" "GTEX-111FC" "GTEX-1128S" "GTEX-117XS" "GTEX-1192X"
由reprex 包于 2022-07-02 创建 (v2.0.1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.