Рассмотрим следующие две функции:
library(ggplot2)
testdata <- as.data.frame(cbind(rep(c(1, 4), each = 50), rbinom(100, 50, .5)))
names(testdata) <- c("group", "value")
plotfun1 <- function(color) {
ggplot(data = testdata, aes(x = factor(group, levels = c(0: 4)), y = value)) +
geom_boxplot(color = color)
}
plotfun2 <- function(number) {
ggplot(data = testdata, aes(x = factor(group, levels = c(0: number)), y = value)) +
geom_boxplot(color = 'red')
}
Plotfun1 отлично работает, вызывая
plotfun1('red')
дает два красивых красных ящика. Однако вызов
plotfun2(4)
выводит сообщение об ошибке:
Ошибка в коэффициенте (группа, уровни = c (0: число)): объект 'номер' не найден
очевидно, в некоторых случаях ggplot не может "найти" аргументы функции, а в некоторых случаях и есть. Что здесь происходит?
PS Я знаю, что есть легкая работа вокруг:
plotfun3 <- function(number) {
plotdata <- testdata
plotdata$group <- factor(plotdata$group, levels = c(0: number))
ggplot(data = plotdata, aes(x = group, y = value)) +
geom_boxplot(color = 'red')
}
Я просто хочу понять, что происходит.)