Использование R с Apache и PHP
Можно ли запускать R-скрипты через Apache и PHP? Я хотел бы иметь возможность передавать переменные из PHP в R.
Кто-нибудь сделал что-то подобное?
По сути, я хотел бы знать, существует ли метод передачи переменных с PHP на R на сервере Apache.
Ответы
Ответ 1
Лично мы использовали интерфейс R CMD BATCH R для достижения этого. Это не очень элегантно, но по существу у нас есть пользователь, вставляющий данные в форму, переданную в PhP, которая генерирует файл .R с чем-то
x = c (1,2,3,4);
dev.off();
участок (х);
Затем мы получаем PhP для выполнения exec "R CMD BATCH"
В каталоге вы должны получить файл Rplots.ps, который может быть отправлен клиенту. Аналогично, вы можете использовать функцию jpeg(), чтобы вернуть изображение jpeg графика, которое затем может отображаться на веб-странице. Php возвращает.
Не очень элегантный, но он работает для нас.
Ответ 2
Смотрите R-FAQ:
Два проекта используют PHP для предоставления веб-интерфейса R. R_PHP_Online от Стива Чена (хотя неясно, активен ли этот проект) несколько похож на приведенные выше Rcgi и Rweb. R-php активно развивается Альфредо Понтилло и Анджело Минео и предоставляет как веб-интерфейс для R, так и набор предварительно определенных анализов, которые не нуждаются в R.
и этот документ: Использование R через PHP для целей обучения: R-php
Ответ 3
Rserve теперь поддерживает php, вы можете найти дополнительную информацию по адресу: http://code.google.com/p/rserve-php/
Ответ 4
Ответы в другом месте:
-
Кажется, что 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. Излишние вычислительные затраты не должны быть слишком большими.
Ответ 5
Вот библиотека 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.
Ответ 6
Другой вариант Rserve. Он позволяет вызывать R с любого языка, поддерживающего сокеты TCP.
Ответ 7
Да, R в mediawiki достигает этого довольно красиво, и это с открытым исходным кодом, чтобы вы могли видеть, как они это сделали.
Я сам играл с самим источником, это очень просто и не нужно долго его адаптировать.
Конечно, вы не можете использовать его как есть, если вы не планируете использовать mediawiki
на своем сервере. Также следите за безопасностью.
Ответ 8
Очень простой способ
Вы можете передавать переменные с помощью аргумента
каждый раз при выполнении exec ( "Rscript yourRscript.R" ) вы передаете аргументы в том, что
например
exec ( "Rscript yourRscript.R arg1 arg2 arg3" )
тогда вашRscript может загрузить этот арест с помощью args < - commandArgs()
Надеюсь, что он полезен ~