将参数传递给 ggvis
Passing arguments to 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
谢谢
在 lm
的情况下,字符串将在内部被强制转换为 class 公式对象。 ~
运算符创建了这个公式对象。
在第二种情况下,ggvis
需要两个单独的公式用于 x
和 y
参数。在您的情况下,您只有一个长字符串,如果以逗号分隔,则可以将其强制转换为两个单独的公式(但这个长字符串本身并不是一个公式)。
因此,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()
但这不是一件非常有效的事情。
我试图将参数作为字符传递给 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
谢谢
在 lm
的情况下,字符串将在内部被强制转换为 class 公式对象。 ~
运算符创建了这个公式对象。
在第二种情况下,ggvis
需要两个单独的公式用于 x
和 y
参数。在您的情况下,您只有一个长字符串,如果以逗号分隔,则可以将其强制转换为两个单独的公式(但这个长字符串本身并不是一个公式)。
因此,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()
但这不是一件非常有效的事情。