PHP передать массив в Rscript - PullRequest
       10

PHP передать массив в Rscript

1 голос
/ 16 октября 2019

У меня проблема с передачей массива php в Rscript. В моем проекте мне нужно использовать php для вызова Rscript для запуска кода R. Но я хочу передать массив php в качестве параметров в Rscript. Но когда я делаю это. Ошибка отчета php: преобразование массива в строку! Я не знаю, чтобы сделать это. Если это может успешно передать параметр. Я все еще не знаю, как прочитать параметр массива в идеях R.Any? Заранее спасибо! Вот пример:

#php file
<?php
$ck=["WT1","WT2"];
$tr=["Al1","Al2"];
exec("Rscript getdata.R $ck $tr");

# getdata.R
args <- commandArgs(TRUE)
ck <- args[1]
tr <- args[2]
ckk <- lapply(strsplit(ck,','),as.character)
trr <- lapply(strsplit(tr,','),as.character)
a <- as.dataframe(a=ckk,b=trr)
write.csv(a,file="test.csv")

1 Ответ

1 голос
/ 16 октября 2019

Похоже, это проблема преобразования $tr и $ck в строки. Не имея опыта работы с php, я основываюсь на других языках и на нескольких других вопросах.

При выполнении из терминала / cmd все аргументы должны быть строками. Следуя примеру из ответа здесь , вы, вероятно, могли бы использовать что-то похожее на (не проверено!)

$ck=["WT1","WT2"];
$tr=["Al1","Al2"];
exec('Rscript getdata.R "' . implode(",", $ck) . '" "' . implode(",", $tr) . '"');

Обратите внимание, что это вернет ввод в виде строки в R, которая затемдолжны быть преобразованы обратно в векторы.

...