我有一个名为my.files的对象,它包含要处理的文件的完整路径。我需要删除(包括) "BAM/“之前的字符,并且只保留"BAM/"之后的字符并获得result。我想在循环中使用它作为输出的列名,这样一个班轮就更合适了。
my.files<-c("/media/BAM/14066.bam","/data/BAM/14091.bam","/code/BAM/sort.bam","/media/BAM/ReCal.sort.bam") 结果
"14066.bam" "14091.bam" "sort.bam" "ReCal.sort.bam"发布于 2015-08-14 07:28:21
> gsub("(.+)BAM/", "", my.files)
[1] "14066.bam" "14091.bam" "sort.bam" "ReCal.sort.bam"发布于 2015-08-14 07:43:09
我会锚定匹配到您的文件路径的末尾,作为一般的解决方案。
sub(".*/(.+)$", "\\1", my.files)发布于 2015-08-14 07:45:07
我想您想要提取文件路径的基本名称。它可以使用已经可用的basename函数来完成。
basename(my.files)
#[1] "14066.bam" "14091.bam" "sort.bam" "ReCal.sort.bam"或者另一种选择是使用regex查找器从str_extract中提取stringr。在这里,我们匹配的字符不是/ ([^/]+),它在/ ((?<=/))后面,直到字符串($)的末尾。
library(stringr)
str_extract(my.files, '(?<=/)[^/]+$')
#[1] "14066.bam" "14091.bam" "sort.bam" "ReCal.sort.bam"https://stackoverflow.com/questions/32004537
复制相似问题