_ggplot2
_では、変数名をスペースで参照するにはどうすればよいですか?
引用符付きの変数名に使用するとqplot()
およびggplot()
が壊れるのはなぜですか?
たとえば、これは動作します:
_qplot(x,y,data=a)
_
しかし、これはしません:
_qplot("x","y",data=a)
_
名前にスペースが含まれているデータマトリックスがよくあるので、質問します。例:「州所得」。 ggplot2にはデータフレームが必要です。はい、変換できます。だから私は次のようなことを試したいと思います:
_qplot("State Income","State Ideology",data=as.data.frame(a.matrix))
_
それは失敗します。
ベースRグラフィックスでは、次のようにします。
_plot(a.matrix[,"State Income"],a.matrix[,"State Ideology"])
_
うまくいくでしょう。
何か案は?
回答:「x」と「y」は、変数名ではなく長さ1の文字ベクトルと見なされるためです。ここでは、Rでスペースを含む変数名を使用するのが賢くない理由を発見します。それ以外のプログラミング言語についても同様です。
スペースを含む変数名を参照するには、どちらのハドリー解を使用できます
a.matrix <- matrix(rep(1:10,3),ncol=3)
colnames(a.matrix) <- c("a name","another name","a third name")
qplot(`a name`, `another name`,data=as.data.frame(a.matrix)) # backticks!
またはより正式な
qplot(get('a name'), get('another name'),data=as.data.frame(a.matrix))
後者は、たとえばループ構文で変数の名前を文字列として渡す構文で使用できます。
for (i in c("another name","a third name")){
print(qplot(get(i),get("a name"),
data=as.data.frame(a.matrix),xlab=i,ylab="a name"))
Sys.sleep(5)
}
それでも、最善の解決策は、スペースを含む変数名を使用しないことです。
同様の何かがggplot2メーリングリストで尋ねられ、MehmetGültaüがこの投稿にリンクしました。文字列を使用してggplot呼び出しを作成する別の方法は、aes_strings
関数。スペースを含む変数で機能するようにするには、引用符内にバッククォートを置く必要があることに注意してください。
library(ggplot2)
names(mtcars)[1] <- "em pi dzi"
ggplot(mtcars, aes_string(x = "cyl", y = "`em pi dzi`")) +
theme_bw() +
geom_jitter()
get
を使用することは、より「形式的な」ものではなく、実際には反対のことを主張します。 Rヘルプが(help("`")
)と言っているように、ほとんどの場合、スペースを含む変数名を使用できます引用符で囲まれている場合。 (通常、既に推奨されているように、バックティックを使用します。)