Подтвердить что ты не робот

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

Я относительно новичок в R и очень новичок в командной строке Linux (Ubuntu). Я пытаюсь написать страницу на PHP, которая содержит команду, которую я хотел бы выполнить в R, а затем передать результаты, чтобы иметь возможность работать с ними. Я пробовал варианты кода ниже, но я получаю только приветственное сообщение R в качестве моего вывода:

<?php

$rQuery = "\"echo 3 + 1;\" | /usr/bin/R --no-save";
exec($rQuery, $output);
print_r($output);

?>

Когда я вручную набираю $rQuery в командной строке, результат будет тем, что я ожидал бы: [1] 4.
Я знаю, что мне, должно быть, что-то не хватает конца, но я не смог понять это в своих собственных поисках.

4b9b3361

Ответ 1

Пара пунктов:

  • Вы хотите --slave как вариант, он подразумевает --no-save и отключает приветствие; см. руководство для более.

  • То, что вы действительно хотите, - это отличный R-inside-Apache Джефф Хорнер, см. здесь для получения более подробной информации. Он может использовать шаблоны шаблонов, такие как brew. Лучше всего, Jeff теперь предоставляет пакет .deb для вас: используйте deb http://ppa.launchpad.net/jeffreyhorner/rapache/ubuntu lucid main в /etc/apt/sources.list.

  • Если вы настаиваете на подключении к php, рассмотрите littler интерфейс сценариев, с которым я работал Jeff. Он начнет работать быстрее, чем R.

Ответ 2

Для чего-то такого простого, вы даже не должны использовать PHP, потому что вы можете сделать это исключительно с помощью пакета RApache, brew и простого HTML (CSS/JS являются необязательными). Просто прочитайте руководство по RApache и посмотрите видеоурок Jeroen Ooms , Вы также должны прочитать руководство brew. Джефф действительно отлично поработает!

В двух словах вам просто нужно настроить файл apache2.conf или .htaccess. Вместо использования директив <Directory> или <Location> вы можете использовать директиву <FilesMatch>, чтобы вы могли сопоставлять файлы с помощью regexpr. Здесь пример .htaccess:

<FilesMatch "^.+\.rhtml$">
    SetHandler r-script
    RHandler brew::brew
</FilesMatch>

Я использую специальное расширение файла .rhtml, где я смешиваю HTML с синтаксисом R в тегах <% и %> (см. документацию brew). Я не использовал brew с PHP, потому что brew с HTML сделал трюк.

В любом случае, вы сказали, что хотите:

написать страницу на PHP, которая содержит команда, которую я хотел бы выполнить в R а затем передать результаты обратно способный работать с ними

  • о выполнении команд с пользовательского ввода... ну... не делайте этого! В частности, пользователи не могут выполнять пользовательские команды, потому что они могут легко передать команды system или file.* и повредить вашу систему! Вы можете использовать AppArmor, но он все еще далеко вниз...
  • сосредоточиться на простых форматах HTML и использовать POST, GET, COOKIES, ФАЙЛЫ и СЕРВЕР, которые предоставляет RApache, а затем манипулировать входами внутри R script
  • о "передаче результатов назад", вы можете использовать либо пакет XML R, либо rjson (мой любимый, и я рекомендую его). Затем вы можете передать объект R функции toJSON и неэтериализовать его с помощью JavaScript. Конечно, это правда, только если ваши клиенты являются веб-браузерами, иначе, если вы, скажем, хотите передать некоторую информацию во встроенную систему, вы должны использовать стандартный XML -way
  • для чего-то такого простого, вам не нужен PHP. В любом случае, вам следует связаться с Jeroen, я знаю, что он использовал какой-то PHP в своем приложении Stockplot

Для получения дополнительных вопросов используйте список рассылки RApache.

... и привет мир R-webdev! =)

Ответ 3

Независимо от того, какой пользователь apache запущен, поскольку не может иметь одинаковые переменные среды или разрешения, как при его запуске из командной оболочки вручную. Узнайте, какой пользователь apache работает как, и убедитесь, что он имеет права и переменные среды.