Jedną z największych funkcji R
jest leniwy szacunek. Prowadzi to do często spotykanego stylu, w którym można używać argumentów jako wartości innych argumentów. Na przykład, w świetnej książce Hadley na Advanced R widać this example:Lazy Ocena: Dlaczego nie mogę użyć wykresu (..., xlim = c (0,1), ylim = xlim)?
g <- function(a = 1, b = a * 2) {
c(a, b)
}
g()
#> [1] 1 2
g(10)
#> [1] 10 20
Teraz chciałbym zrobić to samo dla działki z xlim
i ylim
, jednak nie działa:
> plot(1, 1, ylim = c(0,1), xlim = ylim)
Error in plot.default(1, 1, ylim = c(0, 1), xlim = ylim) :
object 'ylim' not found
> plot(1, 1, xlim = c(0,1), ylim = xlim)
Error in plot.default(1, 1, xlim = c(0, 1), ylim = xlim) :
object 'xlim' not found
- Czy ktoś wie, dlaczego?
- Czy istnieje sposób, aby to osiągnąć?
myślę, że to jest łatwe do wyjaśnienia ze zaktualizowanymi definicjami w http : //adv-r.had.co.nz/Environments.html: domyślnie a rgumenty są oceniane środowisko wykonawcze funkcji, podane argumenty są oceniane jako środowisko wywołania funkcji. – hadley