2012-03-09 12 views
2

expression()bquote()のテキストベースのグラフィックスで特殊なTexのようなマークアップをプロットするときに慣れていますが、パーサーがエラーをスローすることなく "ほぼ等しい" 。マークアップを決定するときに私は?plotmathを参照しています。"ほぼ等しい"を含むプロットテキストR

plot(c(1,100), c(1,100), type="n", axes=FALSE, xlab="", ylab="") 

# This works 
text(50, 80, expression(paste("The area is 24 ", km^2))) 

# This doesn't 
text(50, 50, expression(paste("Reginald is ", %~~% , "14 years old"))) 

答えて

9

これはトリックを行う必要があります。

plot(c(1,100), c(1,100), type="n", axes=FALSE, xlab="", ylab="") 
text(50, 50, 
    expression(paste("Reginald is ", phantom() %~~% phantom(), "14 years old"))) 

動作しませんでしたバージョンが%~~%「演算子」の両方の左と何かを表現の一部であることを期待していることである理由は、その右。 phantom()は、(a)目に見えないもの、(b)幅を持たないもの、つまり必要なものを提供します。

編集

私は毎日何かを学びます。 Brian Diggsは、コメント内で、同じ効果を生成できることを指摘しています。式にコンマを残しておくだけです(この場合、paste()へのネストされた呼び出しは必要ありません)。これは、よりよい解決策である。このため

text(50, 50, expression("Reginald is " %~~% "14 years old")) 
+0

おかげで、それが動作します。これは私が逃した明らかなどこかに書かれていますか? – digitalmaps

+0

いいえ、それは明らかではないし、私が最初にそれを必要としたときに見つけるのは難しかった。私は、 'demo(plotmath)'とタイプして表示された例を調べることでそれを発見したと思います。 3ページ目にポップアップが表示されます。それは '?plotmath'の機能のリストにも含まれていますが、そのユーティリティは本当に綴られていません。 –

+4

この場合、 'phantom()'の代わりに文字列を使うことができます: 'text(50,50、expression(paste)" Reginaldは "%~~%14歳"))) ' –

関連する問題