如何使用OpenCPU运行custom.R脚本

时间:2016-06-22 21:47:20

标签: r opencpu

我有一个问题似乎应该很简单,但它似乎没有在OpenCPU API文档中解决。我已经设置并配置了我的OpenCPU服务器,我可以浏览http://localhost/ocpu/test/,我可以探索一切就好了。在浏览文档时,我可以看到运行包很容易,但有没有办法在我的服务器上运行一个简单的.R文件,而不必将其转换为包?我宁愿不必把它变成一个包来测试它。任何人都知道这是否可行,如果是,那么什么是正确的API?

2 个答案:

答案 0 :(得分:3)

没有。来自OpenCPU FAQ #2 OpenCPU应用是一个 R包,其中包含一些使用OpenCPU API 调用包中R函数的网页(强调我的)。我强烈建议您学习制作包,即使只是为了随机功能。 Hadley的devtools包(以及其他包)使建筑包更容易;如果你需要帮助,他的r-pkgs docs非常好。

答案 1 :(得分:0)

有一种方法可以运行单个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"