インフォマティクスの背景が不足しているため、ggplot2のaes
とaes_string
の違いと日常の使用への影響を理解するのが困難です。
説明(?aes_string
)から、両方のdescribe how variables in the data are mapped to visual properties (aesthetics) of geom
を理解することができました。
さらに、aes uses non-standard evaluation to capture the variable names.
はaes_string
を使用するのに対し、regular evaluation
はa list of unevaluated expressions
を使用すると言われています。
サンプルコードから、両方が同じ出力(> aes_string(x = "mpg", y = "wt")
List of 2
$ x: symbol mpg
$ y: symbol wt
> aes(x = mpg, y = wt)
List of 2
$ x: symbol mpg
$ y: symbol wt
)を生成することは明らかです。
__コード__
Non-standard evaluation
は Hadley Wickhamの著書Advanced R によって、関数の引数の値を呼び出すだけでなく、また、それらを生成したコード。
反対のregular evaluation
は関数から値を呼び出すだけだと思いますが、この仮定を確認するためのソースが見つかりませんでした。さらに、これら2つの違いと、パッケージを使用するときにこれが私に関連する理由がわかりません。
inside-Rウェブサイトaes_string is particularly useful when writing functions that create plots because you can use strings to define the aesthetic mappings, rather than having to mess around with expressions.
しかし、その意味では、なぜ私がaes
を使用し、aes_string
を使用するたびに常にggplot2
を選択する必要がないのかがわかりません...その意味で、これらの概念に関するいくつかの説明と実用的なヒントを見つけるのに役立ちます毎日の使用のため。
aes
は、引用符を必要としないため、入力を節約できます。以上です。もちろん、いつでもaes_string
を自由に使用できます。プログラムで変数名を渡す場合は、aes_string
を使用する必要があります。
内部的には、aes
は非標準の評価にmatch.call
を使用します。説明のための簡単な例を次に示します。
fun <- function(x, y) as.list(match.call())
str(fun(a, b))
#List of 3
# $ : symbol fun
# $ x: symbol a
# $ y: symbol b
比較のために:
library(ggplot2)
str(aes(x = a, y = b))
#List of 2
# $ x: symbol a
# $ y: symbol b
シンボルは後の段階で評価されます。
aes_string
はparse
を使用して同じことを実現します。
str(aes_string(x = "a", y = "b"))
#List of 2
# $ x: symbol a
# $ y: symbol b