如何在闪亮的应用程序的动态输入中运行read.csv数据

时间:2016-04-06 16:14:33

标签: r shiny

在主题[R Shiny Dynamic Input上详细介绍动态闪亮应用 ,我想把数据变成闪亮的应用程序。我在ui.R中写道

library(fPortfolio)
library(quantmod)
library(shiny)


ui <- shinyUI(fluidPage(
  titlePanel("Portfolio optimization"),

  sidebarLayout(
    sidebarPanel(
      numericInput("numInputs", "A number of stocks", 2),
      # place to hold dynamic inputs
      uiOutput("inputGroup")
    ),


mainPanel(
  tabPanel("Trading Statistics",
           fixedRow(
             column(8,
                    fixedRow(column(4,tableOutput("tablePerformance")),
                             column(4,tableOutput("tableRisk"))),
                    fixedRow(column(4,tableOutput("tableDaily")),
                             column(4,tableOutput("tableMonthly"))))
             ))
  )
  )
))

并在server.r

library(fPortfolio)
library(quantmod)
library(shiny)

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

  observeEvent(input$numInputs, {
    output$inputGroup = renderUI({
      input_list <- lapply(1:input$numInputs, function(i) {
        # for each dynamically generated input, give a different name
        inputName <- paste("input", i, sep = "")
        textInput(inputName, inputName, value = 1)
      })
      do.call(tagList, input_list)
    })
  })


  data <- read.csv("E:/stock vn data/dulieuvietnam/metastock_all_data.txt", header = TRUE, stringsAsFactors = FALSE)
  Tickers <- data[!duplicated(data$X.Ticker.),1]
  Tickers <- subset(Tickers,substr(Tickers,1,1)!= "^")
  PriceList <- list()
  for (i in 1:length(Tickers)){
    PriceList[[i]] <- subset(data[,c(2,6)],data$X.Ticker. == Tickers[i])
    names(PriceList[[i]]) <- c("Date",Tickers[i])
    PriceList[[i]][PriceList[[i]]==0]<-NA
    PriceList[[i]] <- na.locf(PriceList[[i]])
  }
  PriceList[[(length(Tickers)+1)]]<-subset(data[,c(2,6)],data$X.Ticker. == "^VNINDEX")
  names(PriceList[[(length(Tickers)+1)]]) <- c("Date","VNINDEX")
  PriceList[[(length(Tickers)+1)]][PriceList[[(length(Tickers)+1)]]==0]<-NA
  PriceList[[(length(Tickers)+1)]] <- na.locf(PriceList[[(length(Tickers)+1)]])

  dataPrice <- PriceList[[1]]
  for (k in 2:length(PriceList)){
    dataPrice <-merge(dataPrice,PriceList[[k]],all=TRUE)
  }

    output$tablePerformance<-renderTable({

  })
})

。 当我运行runApp()时,应用程序只显示带有标签“A stock of stock”的输入,其默认值为2.但是,app的界面没有显示两个文本输入。 请帮帮我!

0 个答案:

没有答案