能否在其中直接嵌入R语言函数,如果不能有没有通用的解决方法,请各位大哥指教。

解决方案 »

  1.   

    java 可以调用批处理  批处理 里面看看能不能调用其他语言
      

  2.   


    朋友不错嘛  哪个学校的的啊?
    /***************************************************************
     Download the jar for org.perl.inline.java first
    ****************************************************************/       
           
           
    //Perl file: StringDistance.pl
    /*
    #! /usr/bin/perl
    # Perl main program acting as a stub for callbacks from Javause strict;
    use warnings;# all modules called from either Perl or from Java must go here:
    use Text::Levenshtein qw();use Inline "Java"  => "STUDY",            # glean interface from Java class file
               "AUTOSTUDY" => 1,              # glean more interfaces, too, just in case
               "STUDY" => ["StringDistance"], # name of our main Java class
               "CLASSPATH" => ".",            # needed in order to find main Java class
               ;my $sd = StringDistance->new(\@ARGV);     # construct instance of main Java class
    $sd->show();                              # call routine to show it
    $sd->StartCallbackLoop();                 # prepare to listen for threaded callbacks
    *//** Example of a Java Class that calls a Perl function.
     * <br/>
     * Does not run on its own -- for usage, see StringDistance.pl!
     */import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import org.perl.inline.java.*;
    // requires classpath to include this file; usually something like
    // .;<perldir>/site/lib/Inline/Java/InlineJavaServer.jar/** The test class. */
    public class StringDistance extends InlineJavaPerlCaller {
      JFrame frame;           // visual container
      JTextField tf[], dist;  // text input fields, result output field
      JButton go, exit;       // action buttons  /* The constructor with possibly 2 initial strings */
      public StringDistance(String[] strs) throws InlineJavaException {
        frame = new JFrame("StringDistance");
        Container p = frame.getContentPane();
        p.setLayout(new GridLayout(0,2));    // The input fields, including labels:
        tf = new JTextField[2];
        for (int i=0; i<2; i++) {
          p.add(new JLabel("String " + i + ":"));
          tf[i] = new JTextField(20);
          if ((strs != null) && (i < strs.length)) tf[i].setText(strs[i]);
          p.add(tf[i]);
        }    // The output field, including label:
        p.add(new JLabel("Distance:"));
        dist = new JTextField(5);
        dist.setEditable(false);
        p.add(dist);    // The main action button:
        go = new JButton("Compute distance");
        go.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent ae) {
                     dist.setText(Integer.toString(match(tf[0].getText(),
                                                         tf[1].getText())));
                   }
                 }
               );
        p.add(go);    // To finish off:
        exit = new JButton("Exit");
        exit.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent ae) {
                     frame.dispose(); System.exit(0);
                   }
                 }
               );
        p.add(exit);    if ((strs != null) && (strs.length > 1))
          dist.setText(Integer.toString(match(tf[0].getText(),
                       tf[1].getText())));
        frame.pack();
      }
      // Alternative constructors:
      public StringDistance(String s0, String s1)
          throws InlineJavaException {
        this(new String[] { s0, s1 });
      }  public StringDistance(String s0) throws InlineJavaException {
        this(new String[] { s0 });
      }  public StringDistance() throws InlineJavaException {
        this((String[])null);
      }
      /** This shows everything */
      public void show() { frame.setVisible(true); }
      /* Optionally for pre-filling the input fields. */
      public void setText(int fieldno, String str) {
        tf[fieldno].setText(str);
      }
      /** The central interface function to Perl. */
      public int match(String s0, String s1) {
        try {
          String str = (String)CallPerl("Text::Levenshtein", "distance",
                                        new Object [] {s0, s1});
          return Integer.parseInt(str);
        } catch (InlineJavaPerlException e) {
          System.err.println("Inline Java Perl Exception: " + e);
        } catch (InlineJavaException e) {
          System.err.println("Inline Java Exception: " + e);
        }
        return 0;
      }}
      

  3.   

    用java 调用PERL 然后用PERL 调用R== 用JAVA 调用Rsystem()可以从PERL 里面调用R
    应该是一个解决方案
      

  4.   

    学习了。
    groovy,jruby等基于JVM的语言,java调用还比较方便。Perl可能也有JPerl之类的。