Это становится довольно близко:
dat <- data.frame(V1 = 1:6, V2 = c(11613, 6517, 2442, 687, 159, 29))
addMyLegend <- function(data, where = "topright", digits = 3, ...) {
MEAN <- round(mean(data), digits = digits)
SD <- round(sd(data), digits = digits)
legend(where, legend = list(bquote(Mean == .(MEAN)),
bquote(SD == .(SD))),
...)
}
plot(dat, type = "h")
addMyLegend(dat$V1, digits = 2, bty = "n")
Что дает

Я не уверен, почему код plotmath не отображается ==
и набрана =
... Придётся чтобы понять это.
Чтобы узнать, что происходит, прочитайте ?bquote
, в котором объясняется, что он может использоваться для замены компонентов выражения динамическими данными. Все, что обернуто в .()
, будет заменено значением объекта, названного в завернутой части выражения. Таким образом, foo == .(bar)
будет искать объект с именем bar
и вставить в выражение значение bar
. Если bar
содержит 1.3
, тогда результат после применения bquote(foo == .(bar))
будет похож на expression(foo == 1.3)
.
Остальная часть моей функции addMyLegend()
должна быть достаточно понятной, если не читать ?legend
. Обратите внимание, что вы можете передать любые аргументы legend()
через ...
в addMyLegend()
.
Спасибо за указатель' sapply (foo, as.expression) '. Я думаю, что я использовал кого-то на этом раньше, и теперь я об этом думаю. –