[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.



More information about the R-help mailing list