将参数传递给ggvis

时间:2015-11-10 15:04:56

标签: r parameter-passing ggvis

我正在尝试将一个参数作为角色传递给ggvis,但我得到一个空的情节。

可重复的例子:

library(ggvis)
y <- c("mpg", "cyl")

ing <- paste0("x = ~ ", y[1], ", y = ~ ", y[2])

#works as intended
mtcars %>% ggvis(x = ~ mpg, y = ~ cyl) %>%
        layer_points()

#gives empty plot
mtcars %>% ggvis( ing ) %>%
        layer_points()

这与lm()中的以下方法有什么不同呢?

formula <- "mpg ~ cyl"
mod1 <- lm(formula, data = mtcars)
summary(mod1)
#works

由于

1 个答案:

答案 0 :(得分:0)

lm情况下,字符串将在内部强制转换为类公式对象。 ~运算符是创建此公式对象的原因。

在第二种情况下,ggvis需要两个单独的xy参数公式。在你的情况下你只有一个长字符串,如果用逗号分割,可以被强制转换成两个单独的公式(但是这个长字符串本身不是一个公式)。

因此,ggvis函数需要像这样才能工作:

#split the ing string into two strings that can be coerced into
#formulas using the lapply function
ing2 <- lapply(strsplit(ing, ',')[[1]], as.formula)

#> ing2
#[[1]]
#~mpg
#<environment: 0x0000000035594450>
#
#[[2]]
#~cyl
#<environment: 0x0000000035594450>


#use the ing2 list to plot the graph
mtcars %>% ggvis(ing2[[1]], ing2[[2]]) %>% layer_points()

但这不是一件非常有效的事情。