Esse Markdown é uma continuação do trabalho Regressao-Linear-para-prever-notas-IMbd-programa-o-em-R que tem por finalidade desenvolver um webApp usando da função de predição de notas.
Caso não tenha visto Acesse AQUI a publicação no Rpubs
Os arquivos estão localizados no repositório github na pasta Rapp.
Para gerar o nosso aplicativos precisamos de dois passos:
library("plumber")Feito isso, precisamos criar nosso aplicativo. Não entrarei em detalhes para explicar as funções usadas, mas basicamente usaremos POST na rota criada com nosso plumber.
Criemaos um arquivo chamado meuscript.R com uma função criada a partir do nosso modelo de regressão linear vista no código em R:
#* @post /prever
funcao_que_preve <- function(orcamento, ano) {
d <- data.frame(budget = as.numeric(orcamento), year = as.numeric(ano))
predict(modelo, newdata = d)
}Note que precisamos rodar o modelo da função lm() No arquivo primeiroAPI.R temos:
library(tidyverse)
prime <- ggplot2movies::movies
dados <- ggplot2movies::movies %>%
filter(!is.na(budget), budget > 0) %>%
select(title, year, budget, rating) %>%
arrange(desc(year))
modelo <- lm(rating ~ budget + year, data = dados)Temos os modelo pronto. Agora importamos o Plumber: library("plumber") Caso não tenha instalado use a função install.packages("plumber")
p <- plumber::plumb('meuscript.R')
p$run(port = 8888)Agora seu R está ocupado e alimentando o aplicativo com dados. Mas isso não é o suficiente, precisamos alimentar a funcao_que_preve() no arquivo meuscript.R.
Todo o processo será um app Local. Você pode acessar a interface gerada pelo plumber através do endereço que o próprio R retorna.
Temos então: Note que no meu caso tem a função GET, que não abordamos, e nem rodamos nesse exemplo, ela não é importante para o nosso exemplo.
Para teste usaremos um aplicativo para google chrome chamado POSTMAN
Instale o aplicativo no navegador pelo google play. A interface dele é bem simples. No Aplicativo, selecione o tipo POST, insira o endereço da rota do nosso aplicativo R
http://127.0.0.1:8888/prever
E na aba body, insira o código a seguir:
{
"orcamento": 234230,
"ano": 2000
}O código vai adicionar a nossa função o orçamendo e o ano de interesse. Aperte o botão "SEND" Temos o resultado:
[
6.0672
]Agora sabemos que nosso APP está funcionando e retornando o valor esperado.
Para o front end usaremos o Node.js e editamos com o Atom
Você pode baixar na pasta nodejsExemple do repositorio aqui
Pelo terminal de comando vá até a pasta e execute o comando: npm install
Obs: Precisa ter instalado o node.JS
Depois execute o comando npm run dev
Assim o aplicativo irá rodar com o ip local na porta 3000
Local: http://localhost:3000
External: http://10.0.0.11:3000
----------------------------------
UI: http://localhost:3001
UI External: http://10.0.0.11:3001 Pronto, nosso app está rodando na rede local. Voce pode acessar pelo seu celular através do IP External e na maquina através Local.