如何解决R Shiny应用程序中的错误“数据必须是数据框或其他可以通过fortify()强制转换的对象,而不是数字矢量”的错误?

时间:2019-05-20 17:24:39

标签: r ggplot2 shiny shiny-reactivity

我是Shiny的新手,正在尝试编写一个应用程序,该应用程序将在同一张图表上创建一个或多个公司的指数股票价格的ggplot。我有一个R脚本可以做到这一点,但是当我尝试将其实现为Shiny应用程序时,我遇到以下错误“解析了多个表达式”。 我得到的当前错误是:

data必须是数据帧或fortify()可强制执行的其他对象,而不是数字矢量

您能帮我弄清楚发生了什么,我需要做什么来解决它?

我修复了上一个告诉我“数据”不是数据帧的错误后,遇到了此错误。我发现在stackoverflow上我应该在创建输出图时放入aes_string()而不是aes()

我还尝试将表达式放在renderPlot()的{​​{1}}中,但是并不能解决问题。

另外,当我只放入一个股票时,会出现以下错误:

“参数表示行数不同:1、0”

这是我的代码:

eval()

我想创建一个Shiny应用程序,允许用户输入代码名称,开始日期和结束日期,并为x轴选择日期中断,以创建X个公司股价的时间序列图。但是,目前,我的代码给我一个错误,提示“数据必须是数据帧或library(shiny) library(tidyquant) library(ggplot2) library(dplyr) #ui logic ui <- fluidPage( #App title titlePanel("Indexed Stock Price Chart"), #Sidebar Layout w/ input & output definitions sidebarPanel( #Input: Enter Ticker Names helpText("Enter tickers separated by a comma as shown in this example: AMZN,GOOG,MSFT"), textInput("ticker", label = h3("Ticker(s)"), value = "Enter tickers...."), #Input: Date Range dateRangeInput("dates", label = "Date Range", start = Sys.Date()-360, end = Sys.Date()), #Input: Select Date Breaks selectInput("dateBr", label = "Choose a date break for x-axis", choices = c("1 month", "3 months", "4 months", "6 months", "1 year", "2 years", "3 years", "4 years", "5 years", "10 years"), selected = "6 months"), #Input: actionButton() actionButton("update", "Create Plot") ), mainPanel( plotOutput("plot1") ) ) #server logic server <- function(input,output) { selectedData<- eventReactive(input$update,{ start_date <- input$dates[1] end_date <- input$dates[2] dateBrInput <- input$dateBr symbol <- unlist(strsplit(input$ticker, ",")) d1 <- tq_get(symbol,get = "stock.prices", from = start_date, to = end_date) S_index <- numeric(0) for (i in 1:length(symbol)){ S_index <- c(S_index, d1$adjusted[which(d1$symbol == symbol[i] & d1$date == min(d1$date))]) } index_df <- data.frame(symbol, S_index) new_df <- full_join(d1, index_df, by = "symbol") new_df$indexed_adj <- new_df$adjusted/new_df$S_index }) output$plot1 <- renderPlot({ ggplot(selectedData(),aes(x=date, y=indexed_adj,colour= symbol)) + geom_line() + xlab("Date") + ylab("Indexed SP") + theme(plot.title = element_text(hjust = 0.5)) + scale_x_date(date_labels = "%b %y", date_breaks = dateBrInput) + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), axis.line = element_line(colour = "black"))+ labs(color = "Company") + theme(legend.title = element_blank()) }) } shinyApp (ui = ui, server = server) 可以强制转换的其他对象,而不是数字矢量”,并且不会生成要绘制的图形。

0 个答案:

没有答案