我有数据,包括日期,温度和记录测量的高程。我正在尝试使用R Shiny创建一个简单的反应图,其中图根据人们感兴趣的高程边界而变化。一旦定义了边界,它就会获取每天这些边界的平均值并绘制它们。这是一个示例数据集(对于生成它的多长时间道歉):
day <- seq.Date(as.Date("2016-01-01"),as.Date("2016-12-31"),by='day')
temperature_c <- runif(366,0,35)
sonde.elev <- 215
df.1 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 220
df.2 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 225
df.3 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 230
df.4 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 235
df.5 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 240
df.6 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 245
df.7 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 250
df.8 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 255
df.9 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 260
df.10 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 265
df.11 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 270
df.12 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 275
df.13 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 280
df.14 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 285
df.15 <- data.frame(day,sonde.elev,temperature_c)
sonde.elev <- 290
df.16 <- data.frame(day,sonde.elev,temperature_c)
campbell_out <- rbind(df.1,df.2,df.3,df.4,df.5,df.6,df.7,df.8,df.9,df.10,df.11,df.12,df.13,df.14,df.15,df.16)
campbell_out <- campbell_out[order(campbell_out$day),]
我已经设置了我的情节,有一个页面愿望侧栏和一个包含情节的主面板。
这是我的ui.R:
#===================
# ui.R
#===================
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Stack Overflow Lough"),
sidebarPanel(
dateRangeInput(inputId = "dateRange",
label = "Date Range",
start = "2016-01-01",
max = Sys.Date()
),
sliderInput(inputId = "minimumElevation",
label="Feet (ASL) - Minimum",
min = 215,
max = 290,
value = 215,
step = 1),
sliderInput(inputId = "maxmimumElevation",
label="Feet (ASL) - Maximum",
min = 215,
max = 290,
value = 290,
step = 1)
),
mainPanel(plotOutput("theGraph"))
)
)
这是我的服务器.R:
#===================
# server.R
#===================
library(plyr)
shinyServer(function(input,output){
passData <- reactive({
campbell_out <- campbell_out[campbell_out$day %in%
seq.Date(input$dateRange[1],
input$dateRange[2], by = "days"),]
campbell_out <- campbell_out[campbell_out$sonde.elev %in%
seq(as.numeric(input$minimumElevation),
as.numeric(input$maximumElevation), by=0.000001),]
campbell_out
})
output$theGraph <- renderPlot({
graphData <- ddply(passData(),.(day),numcolwise(mean))
theGraph <- plot(temperature_c~day,data=graphData, ylab = "Temperature (c)", xlab = "Time")
print(theGraph)
})
})
当我在R Shiny中运行此选项并选择我感兴趣的日期时,我收到以下错误:
Warning: Error in seq.default: 'to' must be of length 1
当我运行类似的脚本来根据特定的日期和高程对数据集进行采样,然后绘制它时,它可以正常工作。所以这个问题似乎与我的Shiny代码有关。如果有人能告诉我哪里出错了,我将不胜感激。
答案 0 :(得分:1)
尝试将这些行添加到passData
被动(处理反应性初始化警告):
passData <- reactive({
req(input$dateRange[1])
req(input$dateRange[2])
req(input$minimumElevation)
req(input$maximumElevation)
campbell_out <- campbell_out[campbell_out$day %in%
seq.Date(input$dateRange[1],
input$dateRange[2],by = "days"),]
print(as.numeric(input$minimumElevation))
print(as.numeric(input$maximumElevation))
campbell_out <- campbell_out[campbell_out$sonde.elev %in%
seq(as.numeric(input$minimumElevation),
as.numeric(input$maximumElevation),by = 0.000001),]
campbell_out
})
并纠正你的shinyUI函数中inputId = "maxmimumElevation"
的错误拼写。
然后适合我。