我有一个功能:
vis = function(df, x){
p1 <- ggplot(df, aes(x)) + geom_line(aes(y = v2))
p1
}
我有一个数据框:
df = data.frame(v0 = c(1,2,3), v1 = c(2,3,4), v2 = c(3,4,5))
我想生成图:(1)v2 vs v0,(2)v2 vs v1。
所以我尝试了:
vis(df, v0) // not work
vis(df, v1) // not work
vis(df, "v0") // not work
vis(df, "v1") // not work
非常感谢任何想法!
如果我们传递的字符串未加引号,则将其转换为quosure,然后求值(!!
)
library(rlang)
library(ggplot2)#devel version
vis = function(df, x){
x <- enquo(x)
p1 <- ggplot(df, aes(!!x)) +
geom_line(aes(y = v2))
p1
}
如果我们x
以字符串形式传递,则替换aes
为aes_string
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句