如何解决为什么在 R ggplot2::facet_grid() 中传递字符串适用于行而不适用于列?
Here 是该问题的一些解决方法,但是您是否有理由可以在 rows
中为 ggplot2::facet_grid()
传递一个字符串,但是 不是为了cols
?
这是有效的(注意 rows
属性):
f_varname <- 'drv'
ggplot( mpg,aes( displ,cty ) ) + geom_point() +
facet_grid( rows = f_varname )
但这不是(注意 cols
属性):
f_varname <- 'drv'
ggplot( mpg,cty ) ) + geom_point() +
facet_grid( cols = f_varname )
# => Error: `cols` must be `NULL` or a `vars()` specification
相反,您必须对 vars()
使用 cols
规范:
ggplot( mpg,cty ) ) + geom_point() +
facet_grid( cols = vars( drv ) )
哪个不能处理字符串:
f_varname <- 'drv'
ggplot( mpg,cty ) ) + geom_point() +
facet_grid( cols = vars( f_varname ) )
# =>
# Error: At least one layer must contain all faceting variables: `f_varname`.
# * Plot is missing `f_varname`
# * Layer 1 is missing `f_varname`
f_varname <- 'drv'
ggplot( mpg,cty ) ) + geom_point() +
facet_grid( reformulate( f_varname ) )
解决方法
我认为@Limey 在评论中的解释是您问题的答案,但如果您正在寻找实用的解决方案(在您已链接的解决方案之外),您可以将字符串转换为符号(使用 {{1 }}) 然后使用 bang-bang 运算符将其传递给 vars,例如
sym()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。