我有一個函數和一個參數列表。將參數傳遞給函數以便用ggplot繪圖stat_function
F <- function(a,b,...) {a^b+b/a}
L <- list("a" = 5, "b" = 2, "c" = 0)
我想更換一個未知的X的參數( 「A」, 「B」 或 「C」)一個(或 「X」)與情節與ggplot的stat_function。
這些計算是一個閃亮的應用程序的一部分,其中用戶將1)從下拉列表中選擇一個參數,稱爲「未知」,和2)使用滑塊來選擇其他值參數。 L中的數字5,2,0是用戶交互之前要使用的默認參數值。有幾個這樣的功能。這裏的參數列表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-)如果我的問題不清楚,請讓我知道,我會澄清。謝謝!
這完全奏效。我也設法讓它在閃亮的環境下工作。感謝您的快速和徹底的答覆。如果只有3天前我有問題的感覺。好吧。我要拿走的一件事就是使用'as.name()'。謝謝! – PatrickT
@PatrickT號更好的問3天后,否則你不會欣賞(因爲它應該是)的答案:) – agstudy
這裏是我正在使用你的代碼的工作的閃亮的應用程序:-)該應用程序是未完成。 https://gist.github.com/ptoche/8376799 Et merci encore ag! – PatrickT