“文件名”字符串可以通过 PHP 的 Rserve 发送到 R 吗?



我在带有Rserve-php(https://code.google.com/p/rserve-php/)的LAMP系统上使用R(http://www.r-project.org/)。我想向 R 发送一个.csv文件。这可能吗?

我尝试使用 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}

尝试使用 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 中的首选赋值运算符是 <-

相关内容

  • 没有找到相关文章

最新更新