Причина в ленивой оценке.(Не просите меня объяснить детали, пожалуйста. Это сложно, и вы можете изучить это с помощью определения языка . Но в основном, x
изменяется до оценки xlab
.) Вы можете исправитьэто легко с помощью force
:
gg <- function(x, xlab = deparse(substitute(x)), ylab = NA, freq = FALSE, ...) {
force(xlab)
x <- round(x)
ylab <- if(is.na(ylab) & freq) "Frequency" else if(is.na(ylab) & !freq) "Probability" else ylab
z <- if(freq) table(x) else table(x)/length(x)
plot(z, xlab = xlab, ylab = ylab, ...)
}
# Example of use:
gg(mtcars$gear)