-1

我是 R 新手。我用谷歌搜索了一段时间,但没有找到相关信息。

以下数组是在我的 php 脚本中生成的。

Array
(
    [data_1] => Array
        (
            [1] => 3
            [2] => 4
            [3] => 10
            [4] => 11
            [5] => 12
        }
    [data_2] => Array
        (
            [1] => 34
            [2] => 5
            [3] => 10
            [4] => 19
            [5] => 1
        }
}

我需要在 R 中处理这些值。所以我想为此创建一个数据框。

data_frame_values = data.frame(A=data_1,B=data_2)

输出像

> data_frame_values
    A     B
1   3    34
2   4    5
3   10   10
4   11   19
5   12   1

谁能告诉我如何做到这一点?

我正在尝试通过迭代 php 数组和字符串连接来创建它。如果需要,我可以分享我的 php 代码。

或者我用了错误的方法,是否还有其他方法存在。

提前致谢

4

2 回答 2

1

您可以将 PHP 数组保存到 CSV 文件中,然后将其加载到 R 会话中。

PHP:

<?php
$array = array("data1"=>array(1,2,45,6,4), "data2"=>array(23,4,5,6,1));
writeCSV ("array.csv", $array, array("A", "B"));

function writeCSV ($filename, $array, $columnNames)
{
    $newArray = array();
    foreach ($array as $key => $subarray)
        foreach ($subarray as $subkey => $val)
            $newArray[$subkey][$key] = $val;

    $x = "\"".implode("\",\"",$columnNames)."\"\n";
    foreach ($newArray as $key => $subarray)
    {
        $x = $x.($key+1).",";
        $tempArray = array();
        foreach ($subarray as $subkey => $val)
            array_push($tempArray, $val);

        $x = $x.implode(",", $tempArray)."\n";
    }

    $open = fopen($filename, "w+");
    fputs($open, $x);
    fclose($open);
}
?>

回复:

x <- read.csv("array.csv");
print(x)
#    A  B
# 1  1 23
# 2  2  4
# 3 45  5
# 4  6  6
# 5  4  1
于 2012-06-18T18:29:13.017 回答
0

您的意思是创建组合数组吗?

$data_r = array();
$data_1 = array(3,4,10,11,12);
$data_2 = array(34,5,10,19,1);
$i = 0;
while ($i < sizeof($data_1))
{
    $data_r[$i] = array( $data_1[$i], $data_2[$i]);
    $i++;
}
print_r($data_r);
于 2012-06-18T14:25:47.530 回答