Я пытаюсь передать числовой вектор из R в массив в PHP.
index.php:
<?php
$n = 3;
$out = array();
exec("Rscript script.R $n", $out);
$length = count($out);
echo "length = ".$length."<br>";
for($i = 0; $i < $length; $i++)
echo "out[$i] = ".$out[$i]
?>
script.R:
#!/usr/bin/env Rscript
i <- as.numeric(commandArgs(TRUE))
print(i:10)
Выход:
length = 1
out[0] = [1] 3 4 5 6 7 8 9 10
Как видно из вышеприведенного вывода, PHP хранит вектор R как отдельный элемент массива. Как сохранить отдельные элементы вектора R в массиве PHP?
Я нашел решение в PHP-р.
Я изменил свой index.php
как:
exec("Rscript my_script.R $n", $out);
$length = count($out);
for ($i = 0; $i < $length; $i++)
foreach (explode("\n", $out[$i]) as $row) {
If (strpos($row, ']') !== false)
$numbersAsStr = substr($row, strpos($row, ']') + 1);
else
$numbersAsStr = $row;
foreach (explode(' ', $numbersAsStr) as $potentialNumber)
if ($potentialNumber !== '')
array_push($result, 0 + $potentialNumber);
}
var_dump($result);
Выход:
array(8) { [0]=> int(3) [1]=> int(4) [2]=> int(5) [3]=> int(6) [4]=> int(7) [5]=> int(8) [6]=> int(9) [7]=> int(10) }
Других решений пока нет …