Я преподаю класс, в котором есть группа начинающих R. Мы столкнулись с задачей построения функции, которая берет вектор и скаляр и выполняет с ним некоторые сложные вычисления. Я упростил его до этого, и это та часть, которая доставляет мне трудные времена:
myfun <- function(xs, mu){
sum((xs - mu)^2)
}
Мне нравится этот способ определения функции, потому что он очень прост и напрямую соответствует математической сигма-записи, которая фактически используется в определении функции, которую мы строим. Функция отлично работает, когда я применяю к вектору и скаляру: myfun(c(1, 2, 3), 5)
Проблема в том, что когда я пытаюсь построить ее (как функцию mu), она будет применена к вектору. Тогда вычитание в сумме приобретает совершенно иной смысл, и все это терпит неудачу, и сюжет заканчивается совершенно неверно.
Я могу исправить это, определив функцию следующим образом:
myfun <- function(xs, mu){
sapply(mu, function(x) {sum((xs - x)^2)})
}
или, используя purrr
, несколько короче
myfun <- function(xs, mu){
map_dbl(mu, ~sum((xs - .x)^2))
}
Оба они добавляют дополнительный уровень сложности поверх простого суммирования, которое появляется в определении функции.
У меня такой вопрос: Какой самый простой и легкий способ объяснить способ определения функции, подобной этой, чтобы она хорошо отображалась с использованием ggplot2 (фактически, ggformula)?