Можно ли запускать R-скрипты через Apache и PHP? Я хотел бы иметь возможность передавать переменные из PHP в R.
Кто-нибудь сделал что-то подобное?
По сути, я хотел бы знать, существует ли метод передачи переменных с PHP на R на сервере Apache.
Можно ли запускать R-скрипты через Apache и PHP? Я хотел бы иметь возможность передавать переменные из PHP в R.
Кто-нибудь сделал что-то подобное?
По сути, я хотел бы знать, существует ли метод передачи переменных с PHP на R на сервере Apache.
Лично мы использовали интерфейс R CMD BATCH R для достижения этого. Это не очень элегантно, но по существу у нас есть пользователь, вставляющий данные в форму, переданную в PhP, которая генерирует файл .R с чем-то
x = c (1,2,3,4); dev.off(); участок (х);
Затем мы получаем PhP для выполнения exec "R CMD BATCH"
В каталоге вы должны получить файл Rplots.ps, который может быть отправлен клиенту. Аналогично, вы можете использовать функцию jpeg(), чтобы вернуть изображение jpeg графика, которое затем может отображаться на веб-странице. Php возвращает.
Не очень элегантный, но он работает для нас.
Смотрите R-FAQ:
Два проекта используют PHP для предоставления веб-интерфейса R. R_PHP_Online от Стива Чена (хотя неясно, активен ли этот проект) несколько похож на приведенные выше Rcgi и Rweb. R-php активно развивается Альфредо Понтилло и Анджело Минео и предоставляет как веб-интерфейс для R, так и набор предварительно определенных анализов, которые не нуждаются в R.
и этот документ: Использование R через PHP для целей обучения: R-php
Rserve теперь поддерживает php, вы можете найти дополнительную информацию по адресу: http://code.google.com/p/rserve-php/
Ответы в другом месте:
Кажется, что RApache релевантен: http://biostat.mc.vanderbilt.edu/rapache/. Он объединяет R с веб-службой в виде модуля Apache. Он доступен как изображение VMWare, поэтому вы можете легко его протестировать. Jeroen Ooms разработал несколько удивительных webapps, основанных на RApache: http://www.stat.ucla.edu/~jeroen/
Еще одно решение для интеграции PHP, Apache и R может использовать одно из решений веб-службы R, таких как statconnWS или rsoap. Это имеет то преимущество, что вы можете просто просто отделить веб-сервер и компьютер, на котором работает R. Излишние вычислительные затраты не должны быть слишком большими.
Вот библиотека PHP, которая может помочь:
https://github.com/kachkaev/php-r
use Kachkaev\PHPR\RCore;
use Kachkaev\PHPR\Engine\CommandLineREngine;
$r = new RCore(new CommandLineREngine('/usr/bin/R'));
$result = $r->run('1 + 1');
echo $result;
Это выведет:
> 1 + 1
[1] 2
Библиотека также доступна как пакет Symfony2.
Другой вариант Rserve. Он позволяет вызывать R с любого языка, поддерживающего сокеты TCP.
Да, R в mediawiki достигает этого довольно красиво, и это с открытым исходным кодом, чтобы вы могли видеть, как они это сделали.
Я сам играл с самим источником, это очень просто и не нужно долго его адаптировать.
Конечно, вы не можете использовать его как есть, если вы не планируете использовать mediawiki
на своем сервере. Также следите за безопасностью.
Очень простой способ
Вы можете передавать переменные с помощью аргумента
каждый раз при выполнении exec ( "Rscript yourRscript.R" ) вы передаете аргументы в том, что
например
exec ( "Rscript yourRscript.R arg1 arg2 arg3" )
тогда вашRscript может загрузить этот арест с помощью args < - commandArgs()
Надеюсь, что он полезен ~