Использование R с Apache и PHP

Нужно ли вообще запускать R-скрипты через Apache и PHP? Я хотел бы иметь возможность передавать переменные из PHP в R.

Кто-нибудь сделал что-то подобное?

По сути, я хотел бы знать, существует ли метод передачи переменных с PHP на R на сервере Apache.

Solutions Collecting From Web of "Использование R с Apache и PHP"

Лично мы использовали интерфейс R CMD BATCH R для достижения этого. Это не очень элегантно, но по существу у нас есть пользователь, вставляющий данные в форму, переданную в PhP, которая генерирует файл .R с чем-то

x = c (1,2,3,4); dev.off (); участок (х);

Затем мы получаем PhP для выполнения exec "R CMD BATCH"

В каталоге вы должны получить файл Rplots.ps, который может быть отправлен клиенту. Аналогично, вы можете использовать функцию jpeg (), чтобы вернуть изображение jpeg на графике, которое затем может отображаться на веб-странице.

Не очень элегантный, но он работает для нас.

См. R-FAQ :

Два проекта используют PHP для предоставления веб-интерфейса R. R_PHP_Online от Steve Chen (хотя неясно, является ли этот проект еще активным) несколько напоминает предыдущие Rcgi и Rweb. R-php активно разрабатывается Alfredo Pontillo и Angelo Mineo и предоставляет как веб-интерфейс для R, так и набор предварительно определенных анализов, которые не требуют ввода R-кода.

и этот документ: Использование R через PHP для целей обучения: R-php

Rserve теперь поддерживает php, вы можете найти дополнительную информацию по адресу: http://code.google.com/p/rserve-php/

Ответы из других источников:

  1. Кажется, что RApache уместен: http://biostat.mc.vanderbilt.edu/rapache/ . Он объединяет R с веб-службой в виде модуля Apache. Он доступен как изображение VMWare, поэтому вы можете протестировать его плавно. Jeroen Ooms разработал несколько удивительных webapps, основанных на RApache: http://www.stat.ucla.edu/~jeroen/

  2. Еще одно решение для интеграции 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")

то yourRscript может загрузить этот agrus, используя args <- commandArgs ()

Надеюсь, что это полезно ~