我刚刚完成了阅读'使用dplyr编程'和'以编程方式定义美学映射',开始掌握函数的非标准评估。这篇文章的具体问题是,“如何使用tidyverse(例如
你能提供答案吗?如果你能涉及以下概念,那就更好了。为什么上面的函数是非标准的,而下面的这个函数是标准的?我读过《Advanced R》关于函数和非标准评估的章节,但现在对我来说太难了。你能用通俗易懂的语言解释一下吗?对我来说,下面的函数很清晰简明,而上面的函数却很模糊。请注意保留HTML标签,不要进行解释。
quo()
,!!
等)”直接编写下面的代码,而不是使用基本R方法eval()
,substitute
,etc.
。library(tidyverse)
xy <- data.frame(xvar = 1:10, yvar = 11:20)
plotfunc <- function(data, x, y){
y.sqr <- (eval(substitute(y), envir = data))^2
print(
ggplot(data, aes_q(x = substitute(x), y = substitute(y.sqr))) +
geom_line()
)
}
plotfunc(xy, xvar, yvar)
你能提供答案吗?如果你能涉及以下概念,那就更好了。为什么上面的函数是非标准的,而下面的这个函数是标准的?我读过《Advanced R》关于函数和非标准评估的章节,但现在对我来说太难了。你能用通俗易懂的语言解释一下吗?对我来说,下面的函数很清晰简明,而上面的函数却很模糊。请注意保留HTML标签,不要进行解释。
rescale01 <- function(x) {
rng <- range(x, na.rm = TRUE)
(x - rng[1]) / (rng[2] - rng[1])
}
rescale01(c(0, 5, 10))