2010-01-23 4 views
9

मैं सिर्फ सीखना शुरू कर रहा हूं कि python के साथ rpy2 का उपयोग कैसे करें। मैं सरल भूखंड बनाने में सक्षम हूं और इस तरह, लेकिन मैंने समस्या में भाग लिया है कि आर में कई विकल्प "।" हैं। उदाहरण के लिए, यहाँ एक अनुसंधान कॉल कि काम करता है:पायथन और आरपी 2: विकल्पों के साथ कॉलिंग प्लॉट फ़ंक्शन "।" उनमें

barplot (टी, col = heat.colors (2), names.arg = c ("pwn", "pwn2"))

जहां टी एक मैट्रिक्स है।

मैं पाइथन में एक ही कॉल का उपयोग करना चाहता हूं, लेकिन यह "।" को अस्वीकार करता है। names.arg का हिस्सा मेरी समझ यह थी कि अजगर में आप "।" को प्रतिस्थापित करते हैं। "_" के साथ, उदाहरण के लिए नाम_र्ग, लेकिन यह या तो काम नहीं कर रहा है। मुझे पता है कि यह एक मूल समस्या है इसलिए मुझे उम्मीद है कि किसी ने इसे देखा है और फिक्स को जानता है। धन्यवाद!

उत्तर

8

आप डॉक्स में described के रूप में नामित तर्कों (using **) के लिए यहां एक शब्दकोश का उपयोग करें, और कार्यों के लिए सीधे आर कॉल कर सकते हैं। यह भी याद रखें कि RPY2 इसकी own vector objects की अपेक्षा करता है। कुछ हैं; हाँ, यह थोड़ा अजीब है, लेकिन प्लस तरफ, आप rpy2 में कुछ भी आप आर

from rpy2 import robjects 
color = robjects.r("heat.colors")() 
names = robjects.StrVector(("pwn", "pwn2")) 
robjects.r.barplot(t, col=color, **{"names.arg":names}) 

में कर सकता है ऐसा करने के लिए (ध्यान दें कि यह rpy2 संस्करण 2.0.x के लिए है में सक्षम होना चाहिए । unreleased 2.1 में परिवर्तन जो मैं अभी तक को देखने के लिए एक मौका नहीं पड़ा है)

+0

यह एक आकर्षण की तरह काम करता है - धन्यवाद! –

1

मुझे नहीं पता कि रपी इसे स्वीकार करेगा या नहीं, लेकिन आपके पास अवधि के साथ कीवर्ड पैरामीटर हो सकते हैं। हालांकि आपको उन्हें एक शब्दकोश के माध्यम से पास करना होगा। इस तरह:

>>> def f(**kwds): print kwds 
... 
>>> f(a=5, b_c=6) 
{'a': 5, 'b_c': 6} 
>>> f(a=5, b.c=6) 
Traceback ( File "<interactive input>", line 1 
SyntaxError: keyword cant be an expression (<interactive input>, line 1) 
>>> f(**{'a': 5, 'b.c': 6}) 
{'a': 5, 'b.c': 6} 
+0

यह वास्तव में सहायक है, विशेष रूप से उत्तर 2 के साथ संयुक्त है। सभी निश्चित, धन्यवाद! –

+0

उस स्थिति में आपको इसे या अन्य उत्तर को स्वीकृत के रूप में चिह्नित करना चाहिए। –

0
rpy2-2.1.0 साथ

, एक तरह से लिखने के लिए यह होगा:

from rpy2.robjects.packages import importr 
graphics = importr("graphics") 
grdevices = importr("grDevices") 

graphics.barplot_default(t, 
         col = grdevices.heat_colors(2), 
         names_arg = StrVector(("pwn", "pwn2"))) 

barplot_default उपयोग करने के लिए (न होने वह बारप्लॉट) के कारण आर'सफंक्शन हस्ताक्षर में इलिप्सिस '...' का व्यापक उपयोग है डी इस तथ्य के लिए कि पैरामीटर नाम अनुवाद को सहेजने के लिए किसी फ़ंक्शन कोड के विश्लेषण की आवश्यकता होगी।

अधिक, और '।' के व्यवस्थित अनुवाद निष्पादित करने के लिए फ़ंक्शन का एक उदाहरण। '_' पर है: http://rpy.sourceforge.net/rpy2/doc-2.1/html/robjects.html#functions

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