Skip to content
Back to formatted view

Raw Message

Message-ID: <20090109211002.2d130243@berwin5>
Date: 2009-01-09T13:10:02Z
From: Berwin A Turlach
Subject: Extracting File Basename without Extension
In-Reply-To: <49673A8E.9050106@idi.ntnu.no>

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