Почему `ann = F` не работает при построении с`as.factor` в R?

Я строю непрерывную переменную против фактора, используя plot() в R (см. пример ниже). Я не хочу метки на осях. Без as.factor позвоните в формулу ann = F подавляет печать этикеток, но не работает с as.factor в формуле.

Почему это?

Спасибо.

# example for SO
# example data 
x <- sample(1:100, 10)
y <- c(rep(1, 5), rep(2, 5))

# ann = F doesn't work here
plot(x ~ as.factor(y), ann = F)

# ann = F does work here
plot(x ~ y, ann = F)

2 ответа

Решение

Кажется, это вызвано plot.formula потому что это работает, если вы укажете x а также y по отдельности:

plot(as.factor(y), x, ann=FALSE)

ОБНОВИТЬ:

Подтверждение, что это в graphics:::plot.formula, Линия, которая вызывает plot явно устанавливает ylab а также xlab (funname является "plot" а также dots знак равно list(ann=FALSE)):

do.call(funname, c(list(mf[[i]], y, ylab = yl, xlab = xl), dots))

Диспетчерская система отправляет нерабочий элемент в plot.factor, который затем отправляет его в boxplot, у которого нет аргумента ann=, а "рабочий" - в plot.data.frame, который отправляется в plot. в конечном итоге по умолчанию, что делает аргумент ann=. Для подавления именования. использовать:

plot (x ~ as.factor (y), names = rep ("", 2))

Другие вопросы по тегам