On Jan 14, 2010, at 15:01 , Henrik Bengtsson wrote:
Currently, system.file() on a non-existing package returns an empty
string:
path <- system.file(package="foo");
print(path);
[1] ""
The same goes for non-existing paths in existing package directories:
path <- system.file("foo", package="base");
print(path);
[1] ""
Is there a rationale for this, or is it just for historical reasons?
Is the empty string "" used in R to represent a "missing" file? (e.g.
file.exists("") == FALSE).
I would like to suggest that an error is thrown instead, so that it is
caught as soon as possible and not down stream.
I cannot answer for the original author, but throwing an error is
generally a very bad idea since it defeats the vectorization. It is
much easier to simply use if(nzchar(system.file(...))) if you want to
throw an error in a scalar context than to lose all results because of
one vector entry. And, yes, file.exists("") will indeed return FALSE
(although it is entirely unrelated).
Cheers,
Simon
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel