[問題類型]:
程式諮詢(我想用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