opencpu - 使用存储在 OpenCPU 服务器上的输出文件作为后续函数调用的输入

标签 opencpu

问题:如何使用存储在 OpenCPU 服务器上的输出文件作为另一个函数的输入?

背景: 我正在尝试在 openCPU 中使用 knitr 和 markdown 来生成 html,我可以用它来更新带有页面加载统计信息的网页。

基本工作流程如下:

  1. 生成 .Rmd 文件,存储在本地。
  2. 访问使用 AJAX 将 .Rmd 文件上传到服务器上的 OpenCPU 实例的网页。
  3. 通过 openCPU 使用 knit 函数将函数转换为存储在服务器上的 *.md 文件。
  4. 对服务器上存储的文件使用 markdownToHTML 函数(通过传入通过调用 knit 生成的适当哈希值)并接收包含以下内容的 AJAX 回复:生成的 HTML。
  5. 使用新的 HTML 更新网页。

就目前情况而言,我的流程一直进行到第 4 步。我可以调用 knit 通过表单请求 POST 传入 .Rmd 文件,然后我收到来自 OpenCPU 的以下回复:

{
"object" : "xa9eaea44e1",
"graphs" : [
    "xf31dcfe7f3"
],
"files" : {
    "figure" : "xfc55396fd8",
    "test.md" : "x7821c69f79"
}
}

其中"test.md"是通过knit函数生成的输出文件。现在,我尝试使用哈希(在本例中 "x7821c69f79" ,通过使用以下参数 POST 到 /R/pub/markdown/markdownToHTML/ascii :

file     /R/tmp/x7821c69f79/bin

这将返回一个 HTTP 400 错误,并显示以下消息:

cannot open URL 'http://localhost/R/store/R/tmp/x7821c69f79/bin/rds'

但是,当我向 /R/tmp/x7821c69f79/bin 发出 GET 请求时,会返回 test.md 的内容。所以我知道在调用 knit 时文件已正确存储。

那么,这是怎么回事?换句话说,如何使用存储在 OpenCPU 服务器上的输出文件作为另一个函数的输入?

最佳答案

嗯,/store 错误看起来像是一个错误,我会调查一下。

也许在第 3 步中,您可以让函数返回 test.md 的内容,例如以return(readLines(test.md))结尾?或者更好的是,不要输出到 test.md 而是输出到 tmpfile() 并返回其中的内容。这样,输出将作为 R 对象存储在存储中,而不是原始文件,并且您可以只传递一个参数,例如第 4 步中的 file=x7821c69f79

你看过markdown example app吗? ?查看来源herehere .

关于opencpu - 使用存储在 OpenCPU 服务器上的输出文件作为后续函数调用的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12679259/

相关文章:

r - opencpu 不显示已安装的软件包

r - 加速opencpu的参数

r - Opencpu 和 R 统计

r - 无法在本地 OpenCPU 单用户服务器上显示 R 脚本

javascript - 如何通过javascript在openCPU上调用自己设计的R函数?

javascript - 将数据帧与 OpenCPU 的 JavaScript 库一起使用

amazon-ec2 - 从opencpu服务器读取文件时出现权限问题