Dear all, I have already twice encountered a case which I consider a limitation of dirname() and basename(). In my functions I have a parameter "outfile" which e.g. tells where a file should be stored. Usually "outfile" is of the form: oufile = "/my/path/myname.txt" > outfile <- "/my/path/myname.txt" > dirname(outfile) [1] "/my/path" > basename(outfile) [1] "myname.txt" However, in addition I want to be able to define the path only, while creating the name "myname.txt" automatically. Sorrowly, I get the following: > outfile <- "/my/path/" > dirname(outfile) [1] "/my" > basename(outfile) [1] "path" It would be great if dirname() and basename() could recognize: dirname("/my/path/") = /my/path/ basename(""/my/path/") = "" i.e. they should be able to recognize a trailing "/". Best regards Christian _._._._._._._._._._._._._._._._ C.h.i.s.t.i.a.n S.t.r.a.t.o.w.a V.i.e.n.n.a A.u.s.t.r.i.a _._._._._._._._._._._._._._._._
These functions work as they should: did you not read the help page which explicitly tells you what happens in this case? The Unix originals work in the same way: gannet% dirname /my/path/ /my Please DO study the R posting guide and do the homework requesting of you before posting. On Mon, 26 Mar 2007, cstrato wrote:> Dear all, > > I have already twice encountered a case which I consider a limitation of > dirname() and basename(). > > In my functions I have a parameter "outfile" which e.g. tells where a file > should be stored. Usually "outfile" is of the form: > oufile = "/my/path/myname.txt" > > > outfile <- "/my/path/myname.txt" > > dirname(outfile) > [1] "/my/path" > > basename(outfile) > [1] "myname.txt" > > However, in addition I want to be able to define the path only, while > creating the name "myname.txt" automatically. > Sorrowly, I get the following: > > > outfile <- "/my/path/" > > dirname(outfile) > [1] "/my" > > basename(outfile) > [1] "path" > > It would be great if dirname() and basename() could recognize: > dirname("/my/path/") = /my/path/ > basename(""/my/path/") = "" > i.e. they should be able to recognize a trailing "/".Not according to the documentation.> > Best regards > Christian > _._._._._._._._._._._._._._._._ > C.h.i.s.t.i.a.n S.t.r.a.t.o.w.a > V.i.e.n.n.a A.u.s.t.r.i.a > _._._._._._._._._._._._._._._._-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
1. I did read the help file. 2. I have my own workaround, using e.g. file.info("/my/path/")[,"isdir"] 3. This was a suggestion. 4. If you agree with me that "/my/path/" is a path, then both "dirname()" and "dirname" give an incorrect answer. 5. Maybe, you can give me a logical reason (besides a historical reason) why this should be the way it is. Prof Brian Ripley wrote:> These functions work as they should: did you not read the help page > which explicitly tells you what happens in this case? > > The Unix originals work in the same way: > > gannet% dirname /my/path/ > /my > > Please DO study the R posting guide and do the homework requesting of > you before posting. > > On Mon, 26 Mar 2007, cstrato wrote: > >> Dear all, >> >> I have already twice encountered a case which I consider a limitation of >> dirname() and basename(). >> >> In my functions I have a parameter "outfile" which e.g. tells where a >> file >> should be stored. Usually "outfile" is of the form: >> oufile = "/my/path/myname.txt" >> >> > outfile <- "/my/path/myname.txt" >> > dirname(outfile) >> [1] "/my/path" >> > basename(outfile) >> [1] "myname.txt" >> >> However, in addition I want to be able to define the path only, while >> creating the name "myname.txt" automatically. >> Sorrowly, I get the following: >> >> > outfile <- "/my/path/" >> > dirname(outfile) >> [1] "/my" >> > basename(outfile) >> [1] "path" >> >> It would be great if dirname() and basename() could recognize: >> dirname("/my/path/") = /my/path/ >> basename(""/my/path/") = "" >> i.e. they should be able to recognize a trailing "/". > > Not according to the documentation. > >> >> Best regards >> Christian >> _._._._._._._._._._._._._._._._ >> C.h.i.s.t.i.a.n S.t.r.a.t.o.w.a >> V.i.e.n.n.a A.u.s.t.r.i.a >> _._._._._._._._._._._._._._._._ >