[R] Open a file which name contains a tilde

Berry, Charles ccberry @end|ng |rom uc@d@edu
Thu Jun 6 18:25:28 CEST 2019



> On Jun 6, 2019, at 3:59 AM, Ivan Krylov <krylov.r00t using gmail.com> wrote:
> 
> On Wed, 5 Jun 2019 18:07:15 +0200
> Frank Schwidom <schwidom using gmx.net> wrote:
> 
>> +> path.expand("a ~ b")  
>> [1] "a /home/user b"
> 
>> How can I switch off any file crippling activity?
> 
> It doesn't seem to be possible if readline is enabled and works
> correctly.
> 
> Calls to path.expand [1] end up [2] in R_ExpandFileName [3], which
> calls R_ExpandFileName_readline [4], which uses libreadline function
> tilde_expand [5]. tilde_expand seems to be designed to expand '~'
> anywhere in the string it is handed, i.e. operate on whole command
> lines, not file paths.
> 

FWIW, the tilde does not always trigger this behavior. 

It seems that the tilde needs to be first in the string or preceded by whitespace and succeeded by whitespace or a path separator so the result looks like a path. 

> path.expand("~/abc/~/def")
[1] "/Users/cberry/abc/~/def"
> 

> path.expand("~/abc/ ~/def")
[1] "/Users/cberry/abc/ /Users/cberry/def"

> path.expand("~/abc/ ~tilde~/def")
[1] "/Users/cberry/abc/ ~tilde~/def"
> 
> path.expand("~/abc/ ~tilde ~/def")
[1] "/Users/cberry/abc/ ~tilde /Users/cberry/def"

An inelegant workaround could be built by adding escapes to the initial path and stripping them from the result.

Perhaps, the intent (in GNU deadline) was to allow a string with multiple paths separated by whitespace to be processed.

Maybe this is seen as a feature in GNU readline even though it is not helpful here.

HTH,

Chuck



More information about the R-help mailing list