Hello,
R 3.6.0 on Ubuntu 19.04.
Since no one mentioned it, notice that the tilde in the middle of a
string needs to be surrounded by spaces to be expanded.
The first code line works as expected, only the second is wrong (buggy).
path.expand('a~b')
#[1] "a~b"
path.expand('a ~ b')
#[1] "a /home/rui b"
Rui Barradas
Às 04:27 de 08/06/19, Richard O'Keefe escreveu:
?path.expand
Expand a path name, for example by replacing a leading tilde by
the user's home directory (if defined on that platform).
*A* path name. The argument is a character vector.
If multiple path names are passed, they are passed
On most builds of R *A LEADING* "~user" will be replaced...
Nothing is said in the R documentation about *multiple* or
*non-leading* tildes being replaced.
The actual behaviour is inconsistent with the documentation.
SOMETHING is a bug.
It's not clear to me why this is in any way dependent on
readline. I've implemented tilde expansion several times
and always without readline.
It sounds as though R might be calling tilde_expand()
when it *should*, to be consistent with the documentation,
be calling tilde_expand_word().
as separate elements of the character vector.
On Sat, 8 Jun 2019 at 04:10, Berry, Charles <ccbe...@ucsd.edu> wrote:
On Jun 6, 2019, at 2:04 PM, Richard O'Keefe <rao...@gmail.com> wrote:
How can expanding tildes anywhere but the beginning of a file name NOT be
considered a bug?
I think that that IS what libreadline is doing if one allows a whitespace
separated list of file names.
As reported in R-help,
https://www.mail-archive.com/r-help@r-project.org/msg254116.html
path.expand seems to expand tildes beginning whitespace separated strings
that could be filenames, but not other tildes.
Thus,
path.expand("~/.newsrc ~/.R/*") # expands both tildes
[1] "/Users/cberry/.newsrc /Users/cberry/.R/*"
path.expand("~/.newsrc~/.R/*") # expands only the first
[1] "/Users/cberry/.newsrc~/.R/*"
This could be a feature if what one wanted was to pass the result to a
system command that will process multiple file arguments, e.g.
system(paste( "wc", path.expand("~/.newsrc ~/.R/*"))) # run wc on some
files
I doubt that this was intended by R-core, but perhaps the readline devs
had this in mind.
Chuck
On Thu, 6 Jun 2019 at 23:04, Ivan Krylov <krylov.r...@gmail.com> wrote:
On Wed, 5 Jun 2019 18:07:15 +0200
Frank Schwidom <schwi...@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.
I am taking the liberty of Cc-ing R-devel in case this can be
considered a bug.
--
Best regards,
Ivan
[1]
https://github.com/wch/r-source/blob/12d1d2d232d84aa355e333348b81180a0e2c6f2f/src/main/names.c#L807
[2]
https://github.com/wch/r-source/blob/12d1d2d232d84aa355e333348b81180a0e2c6f2f/src/main/platform.c#L1915
[3]
https://github.com/wch/r-source/blob/12d1d2d232d84aa355e333348b81180a0e2c6f2f/src/unix/sys-unix.c#L147
[4]
https://github.com/wch/r-source/blob/12d1d2d232d84aa355e333348b81180a0e2c6f2f/src/unix/sys-std.c#L494
[5]
https://git.savannah.gnu.org/cgit/readline.git/tree/tilde.c?h=devel#n187
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
[[alternative HTML version deleted]]
[[alternative HTML version deleted]]
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.