我对R中的plumber软件包还不是很陌生。我有一个可以在我的计算机上本地运行的有效API,并且可以使用以下代码从Web上的实时JS应用程序访问它:
r <- plumb("my_api_code.r")
r$run(host = "0.0.0.0", port = 8000)
我已经读到,在个人笔记本电脑上托管R代码不是一个好主意,但我只是想能够运行以上代码,打开R服务器会话,然后通过Internet访问此代码从另一台机器上进行演示。
是否有一种方法可以根据运行R会话的计算机的IP地址通过Internet访问此api?我找不到可用的r$run
r$host
r$serve
函数的文档。
答案 0 :(得分:1)
它应该能很好地配合您
#' @filter cors
cors <- function(req, res) {
res$setHeader("Access-Control-Allow-Origin", "*")
plumber::forward()
}
很明显,这不是生产环境的答案,而是仅用于展示/测试就可以了。
答案 1 :(得分:1)
您可以尝试一下 该图/ API可通过互联网获得
plumbr.R
#' @get /plotly
#' @serializer htmlwidget
plotlygraph <- function(){
library(plumber)
library(plotly)
Animals <- c("giraffes", "orangutans", "monkeys")
SF_Zoo <- c(20, 14, 23)
LA_Zoo <- c(12, 18, 29)
data <- data.frame(Animals, SF_Zoo, LA_Zoo)
p <- plot_ly(data, x = ~Animals, y = ~SF_Zoo, type = 'bar', name = 'SF Zoo') %>%
add_trace(y = ~LA_Zoo, name = 'LA Zoo') %>%
layout(yaxis = list(title = 'Count'), barmode = 'group')
return(p)
}
在R控制台上使用以下命令运行以上代码
r <- plumber::plumb("plumbr.R")
r$run(host="0.0.0.0", port=8000)
运行此命令后 Swagger窗口将打开 点击按钮“获取/打印” ,然后点击“试用” ,点击“执行” 等待几秒钟
步骤1:
https://i.stack.imgur.com/mEcg4.png
第2步:
https://i.stack.imgur.com/EapIw.png
步骤3:
https://i.stack.imgur.com/h74C6.png
第4步:
[https://i.stack.imgur.com/9CkGc.png][4]
然后显示HTML代码 在此之上,它给出了这样的请求网址
复制链接粘贴到浏览器中,您将看到图
然后使用终端/命令提示符获取您的IP ...
假设您的IP为“ 192.168.10.04”
将其复制并替换为:-
http://192.168.10.04:8000/plotly
然后复制该链接并将其粘贴到您的另一个网络应用程序的框架
您将在新框架(网络应用)上看到您的R图...
我认为这应该对您有帮助