[R] Extracting File Basename without Extension

Berwin A Turlach berwin at maths.uwa.edu.au
Fri Jan 9 14:10:02 CET 2009


G'day Wacek,

On Fri, 09 Jan 2009 12:52:46 +0100
Wacek Kusnierczyk <Waclaw.Marcin.Kusnierczyk at idi.ntnu.no> wrote:

> Berwin A Turlach wrote:
> > G'day all,
> >
> > On Fri, 9 Jan 2009 08:12:18 -0200
> > "Henrique Dallazuanna" <wwwhsd at gmail.com> wrote:
> >
> >   
> >> Try this also:
> >>
> >> substr(basename(myfile), 1, nchar(basename(myfile)) - 4)
> >>     
> >
> > Or, in case that the extension has more than three letters or
> > "myfile" is a vector of names:
> >
> > R> myfile <- "path1/path2/myoutput.txt"
> > R> sapply(strsplit(basename(myfile),"\\."), function(x)
> > R> paste(x[1:(length(x)-1)], collapse="."))
> > [1] "myoutput"
> > R> myfile2 <- c(myfile, "path2/path3/myoutput.temp")
> > R> sapply(strsplit(basename(myfile2),"\\."), function(x)
> > R> paste(x[1:(length(x)-1)], collapse="."))
> > [1] "myoutput" "myoutput"
> > R> myfile3 <- c(myfile2, "path4/path5/my.out.put.xls")
> > R> sapply(strsplit(basename(myfile3),"\\."), function(x)
> > R> paste(x[1:(length(x)-1)], collapse="."))
> > [1] "myoutput"   "myoutput"   "my.out.put"
> >
> >   
> 
> or have sub do the job for you:
> 
> filenames.ext = c("foo.bar", basename("foo/bar/hello.dolly"))
> (filenames.noext = sub("[.][^.]*$", "", filenames.ext, perl=TRUE))

Apparently also a possibility, I guess it can be made to work with the
original example and my extensions.

Though, it seems to require the knowledge of perl, or at least perl's
regular expression. 

Cheers,

	Berwin




More information about the R-help mailing list