[Rd] Limitation of dirname() and basename()

cstrato cstrato at aon.at
Tue Mar 27 20:49:29 CEST 2007


Hin-Tak Leung wrote:
> 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
A 25 year old mistake is no reason for R to duplicate this mistake.
>
>> 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
>
>
>



More information about the R-devel mailing list