首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将论点传递给ggvis

将论点传递给ggvis
EN

Stack Overflow用户
提问于 2015-11-10 15:04:55
回答 1查看 161关注 0票数 2

我试图把一个论点作为一个角色传递给ggvis,但我得到了一个空洞的情节。

可复制的例子:

代码语言:javascript
复制
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()中的以下方法有何不同?

代码语言:javascript
复制
formula <- "mpg ~ cyl"
mod1 <- lm(formula, data = mtcars)
summary(mod1)
#works

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-10 15:15:18

lm情况下,字符串将在内部被胁迫到类公式对象。创建这个公式对象的是~操作符。

在第二种情况下,ggvis需要两个单独的xy参数公式。在您的情况下,只有一个长字符串,如果在逗号上拆分,可以将其强制分成两个单独的公式(但这个长字符串本身并不是一个公式)。

因此,为了工作,ggvis函数必须是这样的:

代码语言:javascript
复制
#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()

但这不是一件很有效率的事。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33633069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档