我编写了一个用于计算 R 中股票相关性的代码,这就是代码。
library(quantmod)
tickers<-c('AAPL','GOOG','MSFT')
stockData=new.env()
getSymbols(tickers,src = "yahoo", env=stockData,from =as.Date("2016-01-01"))
library(PerformanceAnalytics)
x <- list()
Data=data.frame()
clo=data.frame()
for (i in 1:length(tickers)) {
x[[i]] <- get(tickers[i], pos=stockData) # get data from stockData environment
clo<-cbind(clo,Cl(x[[i]]))
Data=cbind(Data,diff(log(Cl(x[[i]]))))
}
chart.Correlation(Data)
Cl(Data)
tail(clo)
但是我很难将其转换为闪亮的应用程序
到目前为止,这是我在闪亮的应用程序中所做的。我选择shinysky
了用于选择多只股票的库
用户界面
#ui.R
library(shinysky)
shinyUI(fluidPage(
titlePanel("test"),
sidebarLayout(
sidebarPanel(
helpText("text"),
select2Input("txt","stock",choices=c("AAPL","GOOG","MSFT"),selected=c("")),
actionButton("go","submit")
),
mainPanel(
tabsetPanel(type="tab",tabPanel("Plot",plotOutput("plot")),tabPanel("summary",tableOutput("table")),tabPanel("close",tableOutput("table1")))
)
)
))
服务器.R
# server.R
library(quantmod)
library(PerformanceAnalytics)
shinyServer(function(input, output) {
stockData <- new.env()
dataInput <- reactive({
if(input$go==0){return()} #confirming button click
else if(input$go==1){
validate(
need(input$txt != "", label = "stock")
)
getSymbols(input$txt, src = "yahoo", env=stockData,from =as.Date(input$dates) )
}
})
output$plot=plot chart.correlation
output$table=table of Close values of stocks etc Cl(Data)
output$table1=output of last close
}
)
上面闪亮的代码是不完整的,因为我不知道如何走得更远并且有一些逻辑错误。
1)我曾经if(input$go==0){return()}
验证按钮点击,但它只工作一次
2) 在shinyapps.io 中部署此代码时会library(PerformanceAnalytics)
干扰并且不允许部署
我该如何解决这些问题?