regex - 如何在 R 中编辑列名?

标签 regex r

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

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

相关文章:

regex - 用 perl 替换两个字符串之间的所有文本,包括换行符

r - 了解R的mle2函数及其参数

python - 使用 R 或 Python 可视化螺旋时间序列?

python - 使用 Python 正则表达式验证日期格式

python - 查找正则表达式中的最后一组

c# - 我可以进一步优化我的正则表达式吗?或者我做得对吗?

r - 使用 R 和 ggplot2 语法将自定义工具提示添加到绘图中

r - 更改/减少 GGally 和 ggpairs 中的点大小

r - 在R中,如何绘制到内存缓冲区而不是文件中?

java - 匹配器需要正则表达式