コード例 #1
0
ファイル: Vector.php プロジェクト: nlware/rserve-php
 public function toHTML()
 {
     $s = '<div class="rexp vector xt_' . $this->getType() . '">';
     $dim = $this->dim();
     $n = $this->length();
     $s .= '<span class="typename">' . Rserve_Parser::xtName($this->getType()) . '</span>';
     $s .= '[';
     $s .= join(',', $dim);
     $s .= ']';
     $s .= '<div class="values">';
     if ($n) {
         $m = $n > 20 ? 20 : $n;
         for ($i = 0; $i < $m; ++$i) {
             $v = $this->values[$i];
             if (is_object($v) and $v instanceof Rserve_REXP) {
                 $v = $v->toHTML();
             } else {
                 $v = $this->valueToHTML($v);
             }
             $s .= '<div class="value">' . $v . '</div>';
         }
     }
     $s .= '</div>';
     $s .= $this->attrToHTML();
     $s .= '</div>';
     return $s;
 }
コード例 #2
0
ファイル: test.binary.php プロジェクト: wuya6878/rserve-php
function testBinary($cnx, $values, $type, $options = array(), $msg = '')
{
    echo '==================================' . CLI_EOL;
    echo 'Test ' . $type . ' ' . $msg . CLI_EOL;
    $tt = strtolower($type);
    $rexp = create_REXP($values, $type, $options);
    $bin = Rserve_Parser::createBinary($rexp);
    //var_dump($bin);
    $i = 0;
    echo "Debug REXP" . CLI_EOL;
    var_dump(Rserve_Parser::parseDebug($bin, $i));
    $i = 0;
    echo "binary to REXP" . CLI_EOL;
    $r2 = Rserve_Parser::parseREXP($bin, $i);
    var_dump($r2);
    $cn2 = get_class($r2);
    $cn = get_class($rexp);
    if (strtolower($cn2) != strtolower($cn)) {
        echo 'Differentes classes' . CLI_EOL;
        return FALSE;
    } else {
        echo 'Class Type ok' . CLI_EOL;
    }
    $r = $cnx->assign('x', $rexp);
    if ($r['is_error']) {
        echo $cnx->getErrorMessage($r['error']);
    } else {
        echo "OK";
    }
    echo CLI_EOL;
    echo "Check R object" . CLI_EOL;
    $r = $cnx->evalString('x');
    var_dump($r);
}
コード例 #3
0
ファイル: test.binary.php プロジェクト: vinod-co/centa
function testBinary($values, $type, $options = array(), $msg = '')
{
    echo 'Test ' . $type . ' ' . $msg . '<br/>';
    $cn = 'Rserve_REXP_' . $type;
    $r = new $cn();
    $tt = strtolower($type);
    if (is_subclass_of($r, 'Rserve_REXP_Vector')) {
        if (is_subclass_of($r, 'Rserve_REXP_List') and @$options['named']) {
            $r->setValues($values, TRUE);
        } else {
            $r->setValues($values);
        }
    } else {
        $r->setValue($values);
    }
    $bin = Rserve_Parser::createBinary($r);
    var_dump(Rserve_Parser::parseDebug($bin, 0));
    $r2 = Rserve_Parser::parseREXP($bin, 0);
    var_dump($r2);
    $cn2 = get_class($r2);
    if (strtolower($cn2) != strtolower($cn)) {
        echo 'Differentes classes';
        return FALSE;
    } else {
        echo 'Class Type ok';
    }
}
コード例 #4
0
ファイル: Vector.php プロジェクト: vinod-co/centa
 public function toHTML()
 {
     $s = '<div class="rexp vector xt_' . $this->getType() . '">';
     $n = $this->length();
     $s .= '<span class="typename">' . Rserve_Parser::xtName($this->getType()) . '</span> <span class="length">' . $n . '</span>';
     $s .= '<div class="values">';
     if ($n) {
         $m = $n > 20 ? 20 : $n;
         for ($i = 0; $i < $m; ++$i) {
             $v = $this->values[$i];
             if (is_object($v) and $v instanceof Rserve_REXP) {
                 $v = $v->toHTML();
             } else {
                 if ($this->isString()) {
                     $v = '"' . (string) $v . '"';
                 } else {
                     $v = (string) $v;
                 }
             }
             $s .= '<div class="value">' . $v . '</div>';
         }
     }
     $s .= '</div>';
     $s .= $this->attrToHTML();
     $s .= '</div>';
     return $s;
 }
コード例 #5
0
ファイル: REXPTest.php プロジェクト: wuya6878/rserve-php
 /**
  * @dataProvider providerTestParser
  * @param unknown_type $type
  * @param unknown_type $values
  */
 public function testParser($type, $values)
 {
     $rexp = $this->create_REXP($values, $type);
     $bin = Rserve_Parser::createBinary($rexp);
     $r2 = Rserve_Parser::parseREXP($bin, $i);
     $this->assertEquals(get_class($rexp), get_class($r2));
     $this->assertEquals($rexp->getValues(), $r2->getValues());
 }
コード例 #6
0
ファイル: Symbol.php プロジェクト: cturbelin/rserve-php
 public function toHTML()
 {
     return '<div class="rexp xt_' . $this->getType() . '"><span class="typename">' . Rserve_Parser::xtName($this->getType()) . '</span>' . $this->name . $this->attrToHTML() . '</div>';
 }
コード例 #7
0
ファイル: Connection.php プロジェクト: vinod-co/centa
 /**
  * Evaluate a string as an R code and return result
  * @param string $string
  * @param int $parser 
  * @param REXP_List $attr
  */
 public function evalString($string, $parser = self::PARSER_NATIVE, $attr = NULL)
 {
     $r = $this->command(self::CMD_eval, $string);
     $i = 20;
     if (!$r['is_error']) {
         $buf = $r['contents'];
         $r = NULL;
         switch ($parser) {
             case self::PARSER_NATIVE:
                 $r = Rserve_Parser::parse($buf, $i, $attr);
                 break;
             case self::PARSER_REXP:
                 $r = Rserve_Parser::parseREXP($buf, $i, $attr);
                 break;
             case self::PARSER_DEBUG:
                 $r = Rserve_Parser::parseDebug($buf, $i, $attr);
                 break;
             case self::PARSER_NATIVE_WRAPPED:
                 $old = Rserve_Parser::$use_array_object;
                 Rserve_Parser::$use_array_object = TRUE;
                 $r = Rserve_Parser::parse($buf, $i, $attr);
                 Rserve_Parser::$use_array_object = $old;
                 break;
             default:
                 throw new Exception('Unknown parser');
         }
         return $r;
     }
     // TODO: contents and code in exception
     throw new Rserve_Exception('unable to evaluate');
 }
コード例 #8
0
ファイル: Connection.php プロジェクト: wuya6878/rserve-php
 /**
  * Assign a value to a symbol in R
  * @param string $symbol name of the variable to set (should be compliant with R syntax !)
  * @param Rserve_REXP $value value to set
  */
 public function assign($symbol, Rserve_REXP $value)
 {
     $symbol = (string) $symbol;
     $data = _rserve_make_data(self::DT_STRING, $symbol);
     $bin = Rserve_Parser::createBinary($value);
     $data .= _rserve_make_data(self::DT_SEXP, $bin);
     $r = $this->sendCommand(self::CMD_assignSEXP, $data);
     return $r;
 }