-1

Rserve-php ( https://code.google.com/p/rserve-php/ ) を備えた LAMP システムでR ( http://www.r-project.org/ ) を使用しています。.csv ファイルを R に送信したいのですが、可能ですか?

evalString() を使用してみましたが、動作せず、以下のエラーが返されました。R と必要なファイルへの接続は問題ありません。出力はHello World!期待どおりに返されます。

rcodetest.php からの evalString():

<?php
require_once 'rconfig.php';
require 'rConnection.php';
//$test_cases = Rserve_Tests_Definition::$native_tests;
try {
    echo '<p>Connecting to Rserve '.RSERVE_HOST;
    $r = new Rserve_Connection(RSERVE_HOST);
    echo ' OK</p>';
    $result = $r->evalString('x ="Hello World!"; x');
    echo $result;
    $filex = $r->evalString("filename=('folder\\folder\\folder\\file.csv')");
    $r->close();
} catch(Exception $e) {
    echo $e;
}
?>

エラー:

exception 'Rserve_Exception' with message 'Unexpected packet Data type (expect DT_SEXP)' in /path/rConnection.php:201 Stack trace: #0 /path/rConnection.php(237): Rserve_Connection->parseResponse(NULL, 0) #1 /path/rcodetest.php(14): Rserve_Connection- >evalString('filename=('fold...') #2 {main}

4

1 に答える 1

0

read.table を使用してみてください。これは、.csv ファイルを処理しようとしている場合です。

$filex = $r->evalString("read.table('folder/folder/folder/file.csv', sep = ',')");



<?php
require_once 'rconfig.php';
require 'rConnection.php';
//$test_cases = Rserve_Tests_Definition::$native_tests;
try {
    echo '<p>Connecting to Rserve '.RSERVE_HOST;
    $r = new Rserve_Connection(RSERVE_HOST);
    echo ' OK</p>';
    $result = $r->evalString('x ="Hello World!"; x');
    echo $result;
    $filex = $r->evalString("read.table('folder/folder/folder/file.csv', sep = ',')");
    $r->close();
} catch(Exception $e) {
    echo $e;
}
?>

使用する

filename=('folder/folder/folder/file.csv')

...は、文字列値をファイル名に割り当てるだけです。

> filename=("~/config.yml")
> filename
[1] "~/config.yml"
> typeof(filename)
[1] "character"

また、R で推奨される代入演算子は です<-

于 2013-12-19T20:29:57.677 に答える