so im pretty new in R and programming for that matter.
I have to make an app that shows me the graph and the table of the data of the action that I choose within the input, as well as that I can choose between the variable that I want to see in the graph. I'm a bit lost and the code no longer works for me.
Here's the code:
#Importamos librerías:
library(shiny)
library(tidyverse)
library(tidyquant)
library(plotly)
#Cargamos los datos de las acciones de Amazon:
datos_yahoo_AMZN <- tq_get(
x = "AMZN",
get = "stock.prices",
from = "2022-01-01",
to = "2022-08-30"
)
datos_yahoo_AAPL <- tq_get(
x = "AAPL",
get = "stock.prices",
from = "2022-01-01",
to = "2022-08-30"
)
datos_yahoo_TSLA <- tq_get(
x = "TSLA",
get = "stock.prices",
from = "2022-01-01",
to = "2022-08-30"
)
library(shiny)
ui <- fluidPage(
titlePanel("Datos Financieros"),
verticalLayout(
radioButtons(
inputId = "accion",
label = "Elige la acción que quieres ver",
choices = c(
"Amazon" = "datos_yahoo_AMZN",
"Apple" = "datos_yahoo_AAPL",
"Tesla" = "datos_yahoo_TSLA"
),
selected = "Amazon",
inline = TRUE
),
radioButtons(
inputId = "var_y",
label = "Elige el dato que quieras conocer",
choices = c(
"Close" = "close",
"Open" = "open",
"Volume" = "volume"
),
selected = "close",
inline = TRUE
),
colourInput(
inputId = "col",
label = "Elige el color",
value = "black"
),
plotlyOutput(outputId = "grafica")
)
)
server <- function(input, output, session) {
if(input$accion == "Amazon") {
output$grafica <- renderPlotly(
datos_yahoo_AMZN |>
ggplot(aes(x = date))
geom_line(aes_string(y = input$var_y),
color = input$col)
)
}
}
shinyApp(ui, server)
Hopefully you'll help me in what to do. Thanks
CodePudding user response:
We can use get
function and avoid the if statements. Another approach can be to download the stock prices upon request from the user.
# Importamos librerías:
library(shiny)
library(dplyr)
library(tidyquant)
library(plotly)
library(colourpicker)
library(ggplot2)
# Cargamos los datos de las acciones de Amazon:
datos_yahoo_AMZN <- tq_get(
x = "AMZN",
get = "stock.prices",
from = "2022-01-01",
to = "2022-08-30"
)
datos_yahoo_AAPL <- tq_get(
x = "AAPL",
get = "stock.prices",
from = "2022-01-01",
to = "2022-08-30"
)
datos_yahoo_TSLA <- tq_get(
x = "TSLA",
get = "stock.prices",
from = "2022-01-01",
to = "2022-08-30"
)
library(shiny)
ui <- fluidPage(
titlePanel("Datos Financieros"),
verticalLayout(
radioButtons(
inputId = "accion",
label = "Elige la acción que quieres ver",
choices = c(
"Amazon" = "datos_yahoo_AMZN",
"Apple" = "datos_yahoo_AAPL",
"Tesla" = "datos_yahoo_TSLA"
),
selected = "Amazon",
inline = TRUE
),
radioButtons(
inputId = "var_y",
label = "Elige el dato que quieras conocer",
choices = c(
"Close" = "close",
"Open" = "open",
"Volume" = "volume"
),
selected = "close",
inline = TRUE
),
colourInput(
inputId = "col",
label = "Elige el color",
value = "black"
),
plotlyOutput(outputId = "grafica")
)
)
server <- function(input, output, session) {
output$grafica <- renderPlotly({
req(input$accion)
plt <- get(input$accion) |>
ggplot(aes(x = date))
geom_line(aes_string(y = input$var_y),
color = input$col
)
ggplotly(plt)
})
}
shinyApp(ui, server)