我有一个名为 的变量姓名 ,我想将其设置为矩阵的列名,但在此之前,我需要编辑名为 的变量内的名称。姓名
>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"
关于regex - 如何在 R 中编辑列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23918200/