在R中给定模式之前删除字符

时间:2015-08-14 07:25:42

标签: r

我有一个名为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"

3 个答案:

答案 0 :(得分:3)

> gsub("(.+)BAM/", "", my.files)
[1] "14066.bam"      "14091.bam"      "sort.bam"       "ReCal.sort.bam"

答案 1 :(得分:1)

我会将匹配锚定到文件路径的末尾,作为一般解决方案。

sub(".*/(.+)$", "\\1", my.files)

答案 2 :(得分:1)

我想你想要提取文件路径的基本名称。它可以使用已有的basename(my.files) #[1] "14066.bam" "14091.bam" "sort.bam" "ReCal.sort.bam" 函数完成。

str_extract

stringr的另一个选项/使用一些正则表达式的外观。在这里,我们匹配[^/]+/)之后的(?<=/)$)字符,直到字符串结尾(library(stringr) str_extract(my.files, '(?<=/)[^/]+$') #[1] "14066.bam" "14091.bam" "sort.bam" "ReCal.sort.bam" )。< / p>

<td>