我尝试创建一个简单的函数,允许绘制ggvis图。我知道我必须在这里使用非标准的评估,这就是为什么我使用intercept函数的lazyeval包:
test_fn <- function(data,xvar, yvar){
plot <-
data %>%
ggvis(lazyeval::interp(~x, x = as.name(xvar)),
lazyeval::interp(~y, y = as.name(yvar))) %>%
layer_points()
return(plot)
}编辑:
这一功能运作良好:
test_fn(mtcars,'mpg', 'qsec')但是,我还应该做些什么,才能使特定的命令发挥作用:
test_fn(mtcars,mpg, qsec)发布于 2016-01-04 19:41:09
一种选择是将deparse(substitute(...))用于这种非标准的评估。它使功能更长,但可以方便用户。
下面是使用lazyeval::interp方法时的样子:
test_fn <- function(data, xvar, yvar){
x <- deparse(substitute(xvar))
y <- deparse(substitute(yvar))
plot <-
data %>%
ggvis(lazyeval::interp(~x, x = as.name(x)),
lazyeval::interp(~y, y = as.name(y))) %>%
layer_points()
return(plot)
}这是prop的版本
test_fn <- function(data, xvar, yvar){
x <- deparse(substitute(xvar))
y <- deparse(substitute(yvar))
plot <-
data %>%
ggvis(prop("x", as.name(x)),
prop("y", as.name(y))) %>%
layer_points()
return(plot)
}这两种方法都使用未引用的变量名称:
test_fn(mtcars, mpg, wt)

https://stackoverflow.com/questions/34597344
复制相似问题