2011-04-25 19 views
11

मैं जावा प्रोग्रामर नहीं हूं। मैं कार्यक्रम आर और सी ++। मेरे पास कुछ जावा कोड है जिसे मैं एक आर पैकेज में शामिल करना चाहता हूं। कार्यक्रम की मूल बातें ये हैं:मैं राजवा से कहां से शुरू करूं?

  1. मानक इनपुट से डेटा पढ़ें।
  2. एमसीएमसी श्रृंखला चलाएं।
  3. एक फ़ाइल में आउटपुट।

मैं आर जहां मैं इस कार्यक्रम आर से मैं Rcpp पैकेज से परिचित हूँ और यह के आराम के कुछ करने के लिए इस्तेमाल कर रहा हूँ चला सकते हैं करने के लिए इस परिवर्तित करना चाहते हैं। इस कोड का उपयोग करना सीखने के लिए मैं आरजेएवी पैकेज से कहां से शुरू करूं।

विशेष रूप से मेरे पास निम्नलिखित प्रश्न हैं।

  1. मैं आर से जावा में डेटा कैसे स्थानांतरित कर सकता हूं, उदा। संख्यात्मक वेक्टर, कारक, आदि
  2. मैं कक्षा के तरीकों को कैसे चला सकता हूं?
  3. मैं पैकेज में जावा कोड कैसे शामिल करूं?

आरजेएवी दस्तावेज बहुत उपयोगी नहीं है। क्या किसी के पास इस पर एक ट्यूटोरियल है?

+2

हाय एंड्रयू - सीआरएएन पर आरजेएवी पेज इसका उपयोग करके कई दर्जन पैकेज सूचीबद्ध करता है।हो सकता है कि आप उन पर एक छड़ी लगा सकें ताकि वे यह देख सकें कि वे चीजें कैसे करते हैं? –

+1

@JDLong पृथ्वी की सतह पर सूर्य विकिरण की गणना करने का एक अच्छा उदाहरण है। हो सकता है कि वह आपको चिपका सकता है और आपको स्रोत कोड पर इंगित कर सकता है (शायद गीथब पर "सेमीस्टिकेशन" खोजें। –

उत्तर

5

ऐसा करने का एक "सरल" तरीका है और ऐसा करने के लिए कुछ कठिन तरीका है।

myCommand <- paste("/path/to/java", argument1, argument2, sep=" ") 
system(shQuote(myCommand)) 

फिर जो कुछ भी आर समारोह समझ में आता है का उपयोग कर उत्पादन फ़ाइल में लिखा है: तो मैं सरल समाधान की ओर झुक रहा एक साधारण आदमी हूँ।

कुछ हद तक कठिन समाधान आपके जावा कोड को संपादित करना है, इसलिए यह stdin से नहीं पढ़ता है, लेकिन वेक्टर, या अन्य जावा ऑब्जेक्ट पास हो जाता है। मैं वास्तव में कैसे अपने जावा कोड में परिवर्तन करने के बारे में सामान्यीकरण नहीं कर सकते, लेकिन जावा समारोह अंततः एक वेक्टर खिलाया जा करने की जरूरत है, तो आप यह कुछ इस तरह करते हैं:

.jinit() 
v <- .jnew("java/util/Vector") 
rVector <- as.character(1:10) 
addToV <- function(item){ 
    v$add(item) 
} 
sapply(rVector, addToV) 

मैं हमेशा में प्रकार के साथ काम कर पाते हैं जैसा कि आप ऊपर देख सकते हैं, आरजेवा काफी दर्द हो सकता है।

एक टिप जो आपको काफी समय बचाएगी यह है: जब आपके पास जावा जावा में जावा ऑब्जेक्ट बनाया गया है तो आप नाम टाइप करके, एक डॉलर का चिह्न टाइप करके और फिर हिट टैब कर सकते हैं। तो प्रकार "वी $" ऊपर बनाया v वस्तु का उपयोग करने और आप इस मिलना चाहिए:

1> v$ 
v$add(    v$hashCode()   v$contains(   v$size()    v$elementAt(   v$capacity()   v$containsAll(  v$firstElement()  v$removeElement(  v$iterator()   v$wait() 
v$get(    v$clone()    v$isEmpty()   v$toArray()   v$remove(    v$ensureCapacity(  v$removeAll(   v$insertElementAt( v$removeElementAt( v$listIterator()  v$getClass() 
v$equals(    v$indexOf(   v$lastIndexOf(  v$toArray(   v$elements()   v$trimToSize()   v$retainAll(   v$lastElement()  v$setElementAt(  v$listIterator(  v$notify() 
v$toString()   v$clear()    v$addAll(    v$addElement(   v$set(    v$subList(   v$copyInto(   v$removeAllElements() v$setSize(   v$wait(    v$notifyAll() 
1> v$ 

गुड लक, और सुनिश्चित हो और चिल्लाना यदि आप विशिष्ट गड़बड़ी की है।

+0

धन्यवाद, यह मुझे चीज़ें देना चाहिए जो मुझे चीजों को पाने के लिए आवश्यक है। –

3

यह डेड्यूसर प्लग-इन विकास दस्तावेज़ में शामिल है। हालांकि यह डेड्यूसर को विस्तारित करने वाले पैकेजों के लिए तैयार है, कुछ वर्ग सामान्य हैं। आर में

चल रहा है जावा तरीके: http://www.deducer.org/pmwiki/pmwiki.php?n=Main.Development#wwjoir

लाना आर जावा में वस्तुओं और जावा कोड के साथ एक पैकेज बनाने: http://www.deducer.org/pmwiki/pmwiki.php?n=Main.Development#suaptijc

पूर्ण प्रकटीकरण: Deducer अपने प्रोजेक्ट है।

+0

चूंकि आपके पास अपनी प्रोफ़ाइल में www.deducer.org लिंक है, इसलिए आपको अपने उत्तर में यह भी उल्लेख करना चाहिए कि आप उत्पाद से संबद्ध हैं (एस)/समाधान (एस) आप प्रस्तावित करते हैं। –

+1

पर्याप्त मेला। मैंने एक प्रकटीकरण कथन जोड़ा है। –

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