Это довольно близко к @Axeman, но я подумал, что поможет более программный способ назначения новых меток.
Во-первых, как всегда, вы можете просто изменить имена столбцов входящих данных с помощью colnames
или setNames
или просто names
. Я предполагаю, что это не то решение, которое вам нужно.
Использование аргумента text.panel=
немного хлопотно, так как он должен быть заранее определен, чтобы «знать», какими должны быть метки, либо сравнивая со старыми метками, либо зная положение. Вместо того, чтобы пытаться быть сверхъестественным, я предлагаю немного причудливый способ сделать это.
Как вы можете видеть в ответе @ Axeman (и в документации для ?pairs
), обычно text.panel=
и другие аргументы принимают функцию, но никакие аргументы этой функции не контролируются пользователем, поэтому мы определим функция, которая сначала берет новые метки для использования, а затем возвращает функцию, переданную pairs
.
my.text.panel <- function(labels) {
function(x, y, lbl, ...) {
if (lbl %in% names(labels)) lbl <- labels[[lbl]]
text(x, y, lbl, ...)
}
}
pairs(iris[1:4], main = "Predicting Iris Class",
text.panel = my.text.panel(c(Sepal.Length="Slen", Sepal.Width="Swid",
Petal.Length="Plen", Petal.Width="Pwid")),
lower.panel = lower_panel_r_squared,
upper.panel = upper_panel_regression_line,
col=c("red","blue","green") [class_to_number])
С помощью этой функции вы можете указать все, некоторые или ни одну из меток; здесь по умолчанию используется предыдущая метка, если новое отображение не найдено, но это можно легко расширить в функции для управления другими методами.
Результат:
Изначально я сохранил mean(x)
и тому подобное из ответа @ Axeman, но, поскольку в противном случае поведение по умолчанию (использующее внутреннюю функцию с именем textPanel
), по-видимому, ожидает одиночные числа, а не векторы, я считаю, что mean
ненужный (хотя и не проблемный).