[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
使用者(已经有用R 做过不少作品)
[问题叙述]:
在ggplot2、plotly、leaflet等绘图套件中,
很常直接用变量的名称去做aesthetic mapping,
但是一旦碰到循环或其它programming需求,
它反而很难一般化。
像是下列的ggplot2绘图范例就有些结果上的差别。
我知道ggplot2套件中有aes_string提供较好的解决方案,
但是其它绘图套件(例如plotly或leaflet)有类似的function吗?
还是它们用non-standard evaluation时不会有问题?
这个问题困扰我满久了,有没有人愿意分享一下经验?
谢谢!
[程式范例]:
# 最一般的做法
ggplot(mtcars, aes(mpg, qsec)) + geom_point() + facet_grid(. ~ am)
# 利用aes_string function
ggplot(mtcars, aes_string("mpg", "qsec")) + geom_point() + facet_grid(. ~ am)
# 以下结果是错误的图
# 用[]指定column
ggplot(mtcars, aes(mtcars[,1], mtcars[,7])) + geom_point() + facet_grid(. ~ am)
# Non-standard evaluation
ggplot(mtcars, aes(eval(parse(text = "mpg"), envir = mtcars),
eval(parse(text = "qsec"), envir = mtcars))) +
geom_point() +
facet_grid(. ~ am)
Stack Overflow相关解答:https://goo.gl/onbTcz
[关键字]:
Non-standard evaluation, aesthetic mapping