2012-12-28 11 views
7

के बजाय एक चर के मान को प्रिंट करना मैं इसमें एक एक्सपोनेंट रखने के लिए एक लेबल प्राप्त करने का प्रयास कर रहा हूं। यहाँ कोड मैंप्लॉट टेक्स्ट में एक अभिव्यक्ति का उपयोग करना - इसके नाम

vall = format(cor(x,y)*cor(x,y),digits=3) 
eq <- expression(paste(R^2," = ",vall,sep="")) 
text(legend.x,legend.y,eq,cex=1,font=2) 

है लेकिन पाठ बस इस enter image description here

मैं वास्तविक Vall (और नहीं पाठ "Vall")

+1

डुप्लिकेट? http://stackoverflow.com/questions/4973898/combining-paste-and-expression-functions-in-plot-labels –

+1

मुझे नहीं लगता कि यह एक डुप्लिकेट है लेकिन इस पोस्ट का शीर्षक थोड़ा भ्रामक है। क्या मैं समस्या को प्रतिबिंबित करने के लिए शीर्षक को दोबारा सुधारने का सुझाव दे सकता हूं क्योंकि एक्सपोनेंट वास्तव में आपकी समस्या नहीं प्रतीत होता है। –

+0

'sep =" "'यहां कुछ भी नहीं है (एक खाली स्ट्रिंग जोड़ता है)। यह 'आधार :: पेस्ट' नहीं बल्कि 'प्लॉटमैथ' है। यहां कोई चोट नहीं आएगी, लेकिन यदि आप एक गैर-खाली स्ट्रिंग निर्दिष्ट करते हैं तो वह नहीं करेंगे जो आप चाहते हैं। –

उत्तर

13

प्रयास करें bquote() दिखाने के लिए कैसे मिलता है की तरह लग रहा है उदाहरण के लिए:

set.seed(1) 
vall <- format(rnorm(1),digits=3) 
eq <- bquote(bold(R^2 == .(vall))) 
sq <- seq(0, 1, by = 0.1) 
plot(sq, sq, type = "n") 
text(0.5, 0.5, eq) 

कारण अपने उदाहरण से काम नहीं करता है कि आर कभी नहीं vall का मूल्यांकन समाप्त होता है:

> eq2 <- expression(paste(R^2," = ",vall,sep="")) 
> eq2 
expression(paste(R^2, " = ", vall, sep = "")) 

plotmath इस बाहर कुछ बनाने की कोशिश करता है, लेकिन अनिवार्य रूप से vall सचमुच लिया जाता है।

सामान्य रूप से आपको प्लॉटमाथ अभिव्यक्ति में paste() की आवश्यकता नहीं है, तो आप मानक ऑपरेटरों का उपयोग करके और लेआउट ऑपरेटरों के उपयोग के माध्यम से अभिव्यक्ति का निर्माण कर सकते हैं। उदाहरण के लिए, एक अभिव्यक्ति एक अपने उदाहरण का उत्पादन (unevaluated vall) के बराबर के लिए, तुम सब वास्तव में जरूरत है:

expression(R^2 == vall) 

bquote() एक तरह से एक वस्तु एक अभिव्यक्ति में अपने मान से बदल दिया है। आप उस ऑब्जेक्ट को लपेटते हैं जिसे आप .() में अपने मान से बदलना चाहते हैं। फिर ऑब्जेक्ट की तलाश करेगा और उसका मूल्य लेगा और इसे अभिव्यक्ति में डालेंगे।

एक अलग इंटरफ़ेस के साथ वैकल्पिक दृष्टिकोण के लिए substitute() भी देखें।

+0

पूरी तरह से स्पष्टीकरण +1 –

+0

यह या तो काम नहीं करता है: अभिव्यक्ति (आर^2 == vall) – CodeGuy

+0

हालांकि, bquote ने बहुत अच्छा काम किया। धन्यवाद – CodeGuy

संबंधित मुद्दे