Как запустить скрипт custom.R с помощью OpenCPU

У меня есть вопрос, который кажется простым, однако он не рассматривается в документации по API OpenCPU. Я отлично установил и настроил свой сервер OpenCPU, я могу просматривать http://localhost/ocpu/test/ и я могу исследовать все просто отлично. Просматривая документацию, я вижу, что запустить пакет довольно просто, но есть ли способ просто запустить простой файл .R на моем сервере без необходимости превращать его в пакет? Я бы предпочел не превращать его в пакет, чтобы протестировать его. Кто-нибудь знает, возможно ли это, и если да, то какой правильный API?


person Jason Tham    schedule 22.06.2016    source источник
comment
Нет. Из Часто задаваемые вопросы по OpenCPU #2: Приложение OpenCPU — это R пакет, который включает некоторые веб-страницы, которые вызывают функции R в пакете с помощью API OpenCPU. Я настоятельно рекомендую вам научиться создавать пакеты, хотя бы для случайных функций. Пакет Hadley devtools (среди прочих) значительно упрощает сборку пакетов; если вам нужна помощь, его документы r-pkgs весьма хороши.   -  person r2evans    schedule 23.06.2016
comment
Спасибо @r2evans. Если вы отправите свой комментарий в качестве ответа, я отмечу его как правильный.   -  person Jason Tham    schedule 23.06.2016


Ответы (2)


Нет. Из часто задаваемых вопросов по OpenCPU #2: Приложение OpenCPU — это пакет R, который включает несколько веб-страниц, которые вызывают функции R в пакете с помощью API OpenCPU (выделено мной). Я настоятельно рекомендую вам научиться создавать пакеты, хотя бы для случайных функций. Пакет Hadley devtools (среди прочего) значительно упрощает сборку пакетов; если вам нужна помощь, его документы по r-pkgs весьма хороши.

person r2evans    schedule 23.06.2016

Есть способ запустить один R-скрипт.

К сожалению, у него есть ограничение: вы можете использовать только двойные или одинарные кавычки в сценарии R. Вот пример, который работает с одинарными кавычками:

# Make test script. DO NOT USE DOUBLE-QUOTES inside the script.
echo "a = c('10', '20')" > myscript.r

# Encode it for transfer.
SCRIPT_ENCODED="$(urlencode "$(cat myscript.r)" | sed -r 's/%0A/\\n/g')"

# Save the script on the server.
RES1=$(curl -s "localhost:8004/ocpu/library/base/R/write" \
    -H "multipart/form-data" \
    -d "x=\"$SCRIPT_ENCODED\"" \
    -d "file='script.r'")

# Execute the script on the server.
TMP_TOKEN1=$(echo $RES1 | sed -r 's/^.*tmp\/(\w+).*$/\1/')
RES2=$(curl -s "localhost:8004/ocpu/tmp/$TMP_TOKEN1/files/script.r" -X POST)

# View the results.
echo $RES2
TMP_TOKEN2=$(echo $RES2 | sed -r 's/^.*tmp\/(\w+).*$/\1/')
curl "localhost:8004/ocpu/tmp/$TMP_TOKEN2/R/a/print"
person Akuukis    schedule 29.12.2018