[R] Existence of formal arguments.
Rolf Turner
r.turner at auckland.ac.nz
Fri Jun 6 03:53:34 CEST 2008
On 6/06/2008, at 12:57 PM, Erik Iverson wrote:
> Note the difference between
>
> test <- function(a) {
> exists("a", mode = "symbol")
> }
> test()
>
> and
>
> test2 <- function(a) {
> exists("a", mode = "numeric") #say
> }
> test2()
>
> and then note that the default mode argument to exists is "any".
Basically, I think, you're saying that a formal argument exists ``as
a symbol''
(even if the object named doesn't exist) and that's why exists("a")
returns TRUE
in these circumstances.
I'm still a bit puzzled, but:
Although test() gives TRUE and test2() gives FALSE,
both test(a) and test2(a) throw an error:
Error in exists("a", mode = "symbol") : object "a" not found
and
Error in exists("a", mode = "numeric") : object "a" not found
whereas if I don't say anything about the mode, as in
test3 <- function(a) {
exists("a")
}
then test3(a) evaluates to TRUE (even though there is no ``a''
anywhere in
the search path.
Also with a redundant specification of the mode, as in
test4 <- function(a){
exists("a",mode="any")
}
one gets test4(a) to be TRUE (no error thrown).
I don't see the pattern. But it's probably not worth wasting time on.
cheers,
Rolf Turner
######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}
More information about the R-help
mailing list