Me encontré con algo extraño, que espero que alguien aquí pueda arrojar algo de luz. Básicamente, cuando una función tiene un argumento cuyo valor predeterminado es el nombre del argumento, suceden cosas extrañas (bueno, extraño de todos modos).Comportamiento inesperado con argumentos predeterminados
Por ejemplo:
y <- 5
f <- function(x=y) x^2
f2 <- function(y=y) y^2
Me considero f
y f2
equivalentes; aunque usan nombres de variables diferentes internamente, ambos deben elegir el objeto y
en el entorno global para usarlo como el predeterminado. Sin embargo:
> f()
[1] 25
> f2()
Error in y^2 : 'y' is missing
No estoy seguro de por qué está sucediendo eso.
para hacer las cosas aún más interesante:
f3 <- function(y=y) y$foo
> f3()
Error in f3() :
promise already under evaluation: recursive default argument reference or earlier problems?
que esperaba f3 para iniciar un error, pero no que uno!
Esto se probó en R 2.11.1, 2.12.2 y 2.14, en Windows XP SP3 de 32 bits. Solo los paquetes estándar cargados.
el tiempo que querían para codificar '
jogo