From hin-tak.leung at cimr.cam.ac.uk  Tue Mar 27 20:25:04 2007
From: hin-tak.leung at cimr.cam.ac.uk (Hin-Tak Leung)
Date: Tue, 27 Mar 2007 19:25:04 +0100
Subject: [Rd] Limitation of dirname() and basename()
In-Reply-To: <46095818.9080703@aon.at>
References: <460807A7.5030405@aon.at>	<Pine.LNX.4.64.0703270744580.9277@gannet.stats.ox.ac.uk>
	<46095818.9080703@aon.at>
Message-ID: <46096180.5070907@cimr.cam.ac.uk>

cstrato wrote:
> 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.

Can you just read "man 3 dirname" and "man 1 dirname" on any unix box?
Isn't "historical reason" - this is how dirname works for the last 25(?) 
years, some people will be *very* upset if it behaves differently now -
a good enough reason?

HTL

> 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
>>> _._._._._._._._._._._._._._._._
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] Limitation of dirname() and basename()
Hin-Tak Leung