我是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)
可以强制转换的其他对象,而不是数字矢量”,并且不会生成要绘制的图形。