2017-02-14 56 views
0

好的,所以我确信我错误地提出了这个问题,但是有什么办法可以完成在Shiny中输入1到控制台中的等效功能。如何在交互功能中输入控制台等效命令?

基本上我想下面的闪亮工作:

library(quantmod) 
library(fPortfolio) 


# Get data 

data1 <- getSymbols(c("VEU","SPY","VWO","AGG"), 
       from = "2016-01-01", 
       to = "2017-01-01") 
data2 <- do.call(merge, lapply(data1, function(x) Ad(get(x)))) 
data3 <- na.omit(ROC(data2,n = 1,"discrete")) 
colnames(data3) <- gsub(".Adjusted","",colnames(data3)) 
data4 <- as.timeSeries(data3) 

# fPortfolio options 

portfolioOptions<-portfolioFrontier(data4) 
plot(portfolioOptions) 

这一点,我们在控制台中以下后:

Make a plot selection (or 0 to exit): 

1: Plot Efficient Frontier 
2: Add Minimum Risk Portfolio 
3: Add Tangency Portfolio 
4: Add Risk/Return of Single Assets 
5: Add Equal Weights Portfolio 
6: Add Two Asset Frontiers [LongOnly Only] 
7: Add Monte Carlo Portfolios 
8: Add Sharpe Ratio [Markowitz PF Only] 

Selection: 

有什么办法输入1-8成选择在闪亮和渲染情节相应?

+0

一系列的复选框会做你想要什么。 –

回答

0

您可以使用which参数指定地块每次绘制:

library(shiny) 
shinyApp(ui=fluidPage(plotOutput("plot"), 
         textInput("num", "Enter choice", "1")), 
     server=function(input, output, session){ 
      plotlist <- reactiveValues() 
      observeEvent(input$num, { 
      if(!is.null(input$num)){ 
       if(input$num=="1") 
       plotlist$l <- 1 
       else 
       plotlist$l <- c(plotlist$l, as.numeric(input$num)) 
      }}) 
      output$plot <- renderPlot(plot(portfolioOptions, which=plotlist$l)) 
     }) 
+0

谢谢!很棒。 –