[Rd] Wishlist: system.file(... package) throw an error if package not installed/path not found

2010-01-14 Thread Henrik Bengtsson
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.

/Henrik

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] Wishlist: system.file(... package) throw an error if package not installed/path not found

2010-01-14 Thread Simon Urbanek


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