[R] Why does 'exists' need a quoted argument?

Morten Sickel Morten.Sickel at nrpa.no
Thu Feb 20 17:33:03 CET 2003

Kevin Wright wrote:
>Can someone explain why 'get' and 'exists' require quoted object names?

>Would it make sense (more consistency) to have these functions check to see
if the 
>first argument is a string, and if not, then 'substitute' it?
Intuitively, >'exists' is checking to see if an object exists, not to see if
a character string 
>exists.  Evidently my intuition is wrong.

Well, if you read the ?exists you'll see that it "Search for an R object of
the given name on the search path". Even though I am absolutely no R
developer, I would guess that it would be not impossible to write a function
that does as you thinks, but, its functionality would be worse than for the
current exists, consider for example:

for (i in c("Foo","Bar","Baz"))
  if (!exists(i)){ 

i.e. if the object doesn't exist, I have to initialize it, if it does exist,
I just keep on using it, I know that the object i exists, so I don't care
about that. On the other hand, if it was automatically substituting what was
found to be a string, it would not be possible to

if (!exists("String")){String<-"Default value"}

So, no, I think some useful functionality would be thrown out if exist did
not require a string.

Morten Sickel

More information about the R-help mailing list