2013-12-19 21 views
-1

我在帶有Rserve-php(https://code.google.com/p/rserve-php/)的LAMP系統上使用R(http://www.r-project.org/)。我想發送一個.csv文件給R.這可能嗎?可以通過Rserve使用PHP將`filename`字符串發送給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}

回答

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中優選的賦值運算符是<-

+0

嘗試'read.table'。不幸的是,它仍然返回相同的錯誤。 – user2932733

+0

您是否嘗試過使用「/」替代「\」的絕對路徑? – SethB

+0

這解決了「意外的數據包數據類型」錯誤。現在只是「無法評估」。在/folder/folder/folder/folder/folder/rConnection.php:239堆棧跟蹤中:#0 /folder/folder/folder/folder/folder/rcodetest.php(13)發生異常'Rserve_Exception',並顯示'無法評估'消息):Rserve_Connection-> evalString('read.table('fol ...')#1 {main}' – user2932733

相關問題