У меня есть функция и список аргументов.
F <- function(a,b,...) {a^b+b/a}
L <- list("a" = 5, "b" = 2, "c" = 0)
Я хочу заменить один из аргументов («a», «b» или «c») неизвестным x (или «x») и построить график с помощью stat_function ggplot.
Эти вычисления являются частью блестящего приложения, в котором пользователь 1) выбирает параметр из раскрывающегося списка, скажем, «а», чтобы быть неизвестным, и 2) использует ползунки для выбора значений других параметров. Цифры 5, 2, 0 в L — это значения параметров по умолчанию, которые следует использовать перед взаимодействием с пользователем. Таких функций несколько. Здесь в списке параметров L есть элемент, не используемый в F.
Я застрял на этом так долго, что я больше не могу ясно мыслить. Из многих вещей, которые я пробовал, вот одна:
# select a parameter to vary:
Y <- "a"
f1 <- function(f = F, l = L, y = Y, x, ...){
l[y] <- x # replace "a" with x
do.call(f, l, ...)
}
# make a stat_function ggplot:
library("ggplot2")
df <- data.frame(x = c(0,10))
p <- ggplot(df, aes(x))
p <- p + stat_function(fun = f1)
print(p)
Это возвращает следующую ошибку:
Error in (function (f = F, l = L, y = Y, x, ...) :
argument "x" is missing, with no default
Error in as.environment(where) : 'where' is missing
Я пробовал несколько вариантов, в том числе: установка l[y] ‹- "x" и использование aes_string вместо aes. Я также пробовал обратные кавычки вокруг x. Я прочитал документацию об средах, поэтому я попытался определить среду, обернуть x и почти все, что связано с eval или кавычками. Я даже пробовал вуду. Я уже сбился со счета, сколько часов я потратил на это. Предложение прочитать инструкцию или подсказка без объяснения меня убьет. 8-) Если мой вопрос непонятен, пожалуйста, дайте мне знать, и я уточню. Спасибо!