IT干货网

regex之如何在 R 中编辑列名

52php 2026年09月08日 编程设计 111 0

我有一个名为 的变量姓名 ,我想将其设置为矩阵的列名,但在此之前,我需要编辑名为 的变量内的名称。姓名

>name 
[722] "TCGA-OL-A66N-01A-12R-A31S-13.isoform.quantification.txt" 
[723] "TCGA-OL-A66O-01A-11R-A31S-13.isoform.quantification.txt" 
[724] "TCGA-OL-A66P-01A-11R-A31S-13.isoform.quantification.txt" 

我只想保留第四个 之前的字母-

预期输出:
  >name 
    [722] "TCGA-OL-A66N-01A" 
    [723] "TCGA-OL-A66O-01A" 
    [724] "TCGA-OL-A66P-01A" 

有人会帮我在 R 中实现这个吗?

请您参考如下方法:

正则表达式“[”运算符定义了一个字符类,在字符类中,第一个位置的“^”运算符进行否定;

?regex 
?sub 
 
sub("^([^-]*[-][^-]*[-][^-]*[-][^-]*)([-].*$)", "\\1", name) 
[1] "TCGA-OL-A66N-01A" "TCGA-OL-A66O-01A" "TCGA-OL-A66P-01A" 

这比 str_split 方法更简单(IMO)
 sapply( lapply( strsplit(name, "\\-"), "[", 1:4),    
                # extracted the first 4 elements from each list element returned by strsplit 
         paste, collapse="-")  # 'collapse' needed rather than 'sep' 
 
#[1] "TCGA-OL-A66N-01A" "TCGA-OL-A66O-01A" "TCGA-OL-A66P-01A" 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!