Как редактировать таблицы в г блестящем - PullRequest
0 голосов
/ 28 февраля 2020

library(quantmod)
library(shiny)

ui <- fluidPage(
    textInput("Stock","Input Stock"),
    textInput("Date","Input Start Date"),
    textInput("Dateto","Input End Date"),
    actionButton("GO","GO"),
    tableOutput("table")
)

server <- function(input, output, session){

    data <- eventReactive(input$GO,{
        req(input$Stock)
        getSymbols(input$Stock,src = "yahoo", from=input$Date,to=input$Dateto,auto.assign=F)

    })


    output$table <- renderTable({
        data()
    })

}
shinyApp(ui, server)

вот мой код для моего текущего блестящего документа, он выводит таблицу данных входного запаса в соответствии с запросом, как бы я, например, go о редактировании таблицы 'data' перед ее выводом добавление столбца с скользящими средними внутри него

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

В вашей функции eventReactive вы можете изменить объект и добавить или удалить столбцы и т. Д. c .. Вы можете сохранить его в формате xts или преобразовать его, например, в таблицу данных. Ниже приведен пример добавления 7-дневного скользящего среднего цены закрытия к объекту xts:

invisible(lapply(c("quantmod", "shiny"), require, character.only=TRUE))  

ui <- fluidPage(
    textInput("Stock","Input Stock"),
    dateRangeInput("Date", "Input Date Range"),
    actionButton("GO","GO"),
    tableOutput("table")
)

server <- function(input, output, session){

    data <- eventReactive(input$GO,{
        req(input$Stock)
        dt <- getSymbols(input$Stock, src="yahoo", 
                from=input$Date[1], to=input$Date[2],
                auto.assign=FALSE)
        cn <- paste(input$Stock, "7d_Avg", sep=".")
        dt$roll <- rollapply(dt[,4], 7, mean)
        colnames(dt)[colnames(dt) == "roll"] <- cn
        return(dt)
    })

    output$table <- renderTable({
        data()
    })

}
shinyApp(ui, server)
0 голосов
/ 28 февраля 2020

Если вам не нужно сохранять объект data как xts zoo, один из вариантов - сохранить результаты вашего вызова в getSymbols, преобразовать в data.frame, а затем назначить новый столбец. В приведенном ниже примере я произвольно выбираю значения для ваших входных данных (отслеживая запас AAPL за последние 90 дней) и рассчитываю скользящую среднюю 7-дневную цену закрытия, используя функцию rollmeanr() из zoo:

raw_data <- getSymbols("AAPL",src = "yahoo", from=Sys.Date()-90,to=Sys.Date(),auto.assign=F)
df <- as.data.frame(raw_data)
# k is the window size for rolling mean
# fill = NA tells the function to fill missing values with NA
df$moving_7_day <- rollmeanr(df$AAPL.Close, k = 7, fill = NA)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...