r - $ 运算符对于使用 dygraph 和读取多个数据的闪亮原子向量无效
问题描述
当我想在 R Shiny 中使用 dygraph 绘制图形时,我遇到了无效原子向量的问题。输入可以通过 SelectInput 选择,文件以 CSV 格式保存在我的目录中。这基本上是我试图使其工作的 UI 和服务器之间的连接。
我已经阅读了答案,我知道这是 R 的一个错误,它没有很好地标记,这就是为什么我还没有弄清楚如何解决它。
ui <- dashboardPage(
fluidPage(
fluidRow(
column(3,
"sidebar",
fluidPage(
wellPanel(height =500),
box(selectInput("period", "Choose Year:",
c("2006" = "2006",
"2007" = "2007",
"2008" = "2008",
"2009" = "2009"
)),
width=NULL),
wellPanel(height =300)
)
),
column (9,
"main",
fluidPage(
wellPanel(width = "100%", height = "100%",
dygraphOutput("PerYear")
)
)
)
)
server <- function(input, output, session) {
output$PerYear <- renderDygraph({
reading_csv <- function (year) {
csvpath <- "./xts_folder/"
y <-read.csv(paste0(csvpath,year,"_RW.csv"),header=TRUE, sep=",")
ytime <- mdy_hm(y[["timestampUTC"]], tz="UTC")
y_xts <- xts(y, order.by = ytime)
ts.sn.year<-dygraph(y_xts)%>% dyRangeSelector()
return(ts.sn.year)
}
if(input$period == "2006" ){
y<-2006
pyear<-reading_csv(year = y)
pyear
}
else if(input$period == "2007" ){
y<-2007
pyear<-reading_csv( year = y)
pyear
}
else if(input$period == "2008" ){
y<-2008
pyear<-reading_csv(year=y)
pyear
}
else if(input$period == "2009" ){
y<-2009
pyear<-reading_csv(year=y)
pyear
}
}
)
}
也许有一些错误,因为我删除了其余的代码,但主要部分是 dygraph 的渲染和输出的连接。CSV 文件可能如下所示:
timestampUTC,max
1/1/2006 0:50,0.7
1/1/2006 1:50,6.4
1/1/2006 2:50,7.5
1/1/2006 3:50,0.3
1/1/2006 4:50,0
1/1/2006 5:50,0.2
1/1/2006 6:50,0.7
1/1/2006 7:50,1.5
1/1/2006 8:50,0.5
1/1/2006 9:50,0.4
1/1/2006 10:50,0.3
1/1/2006 11:50,1.6
1/1/2006 12:50,0.7
1/1/2006 13:50,1.6
1/1/2006 14:50,0.6
1/1/2006 15:50,0.2
1/1/2006 16:50,0.4
1/1/2006 17:50,0.7
例如,从代码中可以看出,它们以相同的名称格式存储:2006_RW、2007_RW 等。
我真的很感激任何帮助或一瞥,我已经尝试了很多东西。谢谢!!!
解决方案
欢迎来到 SO!
我清理了你的用户界面。
请检查以下内容:
# Create files ------------------------------------------------------------
csvpath <- "./xts_folder/"
if(!dir.exists(csvpath)){
dir.create(csvpath)
}
DF <- data.frame(stringsAsFactors=FALSE,
timestampUTC = c("1/1/2006 0:50", "1/1/2006 1:50", "1/1/2006 2:50",
"1/1/2006 3:50", "1/1/2006 4:50", "1/1/2006 5:50",
"1/1/2006 6:50", "1/1/2006 7:50", "1/1/2006 8:50", "1/1/2006 9:50",
"1/1/2006 10:50", "1/1/2006 11:50", "1/1/2006 12:50",
"1/1/2006 13:50", "1/1/2006 14:50", "1/1/2006 15:50",
"1/1/2006 16:50", "1/1/2006 17:50"),
max = c(0.7, 6.4, 7.5, 0.3, 0, 0.2, 0.7, 1.5, 0.5, 0.4, 0.3, 1.6,
0.7, 1.6, 0.6, 0.2, 0.4, 0.7)
)
DF
write.csv(DF, file = file.path(csvpath, "/2006_RW.csv"), row.names = FALSE, quote = FALSE)
DF$timestampUTC <- gsub("2006", "2007", DF$timestampUTC)
DF$max <- runif(18)
write.csv(DF, file = file.path(csvpath, "/2007_RW.csv"), row.names = FALSE, quote = FALSE)
DF$timestampUTC <- gsub("2007", "2008", DF$timestampUTC)
DF$max <- runif(18)
write.csv(DF, file = file.path(csvpath, "/2008_RW.csv"), row.names = FALSE, quote = FALSE)
DF$timestampUTC <- gsub("2008", "2009", DF$timestampUTC)
DF$max <- runif(18)
write.csv(DF, file = file.path(csvpath, "/2009_RW.csv"), row.names = FALSE, quote = FALSE)
# App ---------------------------------------------------------------------
library(shiny)
library(shinydashboard)
library(dygraphs)
library(lubridate)
library(xts)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(selectInput(
"period",
"Choose Year:",
c(
"2006" = "2006",
"2007" = "2007",
"2008" = "2008",
"2009" = "2009"
)
)
),
dashboardBody(
wellPanel(
width = "100%",
height = "100%",
dygraphOutput("PerYear")
)
)
)
server <- function(input, output, session) {
output$PerYear <- renderDygraph({
reading_csv <- function (year) {
csvpath <- "./xts_folder/"
y <- read.csv(paste0(csvpath, year, "_RW.csv"), header = TRUE, sep = ",")
ytime <- mdy_hm(y[["timestampUTC"]], tz = "UTC")
y_xts <- xts(y, order.by = ytime)
ts.sn.year <- dygraph(y_xts) %>% dyRangeSelector()
return(ts.sn.year)
}
if (input$period == "2006") {
y <- 2006
pyear <- reading_csv(year = y)
pyear
}
else if (input$period == "2007") {
y <- 2007
pyear <- reading_csv(year = y)
pyear
}
else if (input$period == "2008") {
y <- 2008
pyear <- reading_csv(year = y)
pyear
}
else if (input$period == "2009") {
y <- 2009
pyear <- reading_csv(year = y)
pyear
}
})
}
shinyApp(ui, server)
但是,我建议您每次要更新绘图时都阅读 csv 文件。最好只在需要时阅读它们。
推荐阅读
- json - 如何以 Json 格式、键和值保存而不重复 ansible 事实
- python - Pandas 将每列与前 4 行聚合在一起
- reactjs - 检查字段是否有效 Formik React JS
- angular - 为什么内容投影不适用于根组件?
- hololens - MRTK - 在运行时更改空间意识材料
- filesystems - Databricks 文件系统 - %sh ls 与 %fs ls
- java - 如何防止JPA查询相关实体
- c - strncat 导致缓冲区溢出
- reactjs - 如何在firestore中同时完全删除集合文档和子集合文档
- flutter - #_currentArena 是什么?(句法)