【发布时间】:2017-04-24 18:18:24
【问题描述】:
我正在尝试根据反应式用户定义的 ID 显示两个文本字段。但是,我目前没有为所需字段显示任何文本。我认为这与有 25 个具有相同 ID_no 的数据点的事实有关(我正在使用数据进行绘图,但由于它与我的问题无关,所以我删除了绘图)。但是,在故障排除中删除数据后,仍然没有显示任何文本。我很确定我的错误出现在代码的第 51 行和第 52 行,但我不确定如何纠正它。如有任何故障排除帮助,我们将不胜感激。
#Check packages to use in library
{
library('shiny') #allows for the shiny app to be used
library('magrittr')
}
#Data
ID_no <- 123
Data_val <- sample(0:100, 25)
employee_name <- as.character("Employee1")
date <- Sys.Date()
ID_1 <-data.frame(ID_no, Data_val, employee_name, date)
ID_no <- 456
Data_val <- sample(0:100, 25)
employee_name <- as.character("Employee2")
date <- Sys.Date()-10
ID_2 <-data.frame(ID_no, Data_val, employee_name, date)
data <-rbind(ID_1, ID_2)
IDchoices <- as.character(unique(data$ID_no))
# UI
ui <- fluidPage(
fluidRow(
column(4,
wellPanel(
selectInput(inputId = "ID", label="Select ID:", choices = IDchoices, selected = "1", multiple = FALSE, selectize = TRUE)
),
wellPanel(span(h5(strong("Employee:")), h5(textOutput("Staff_name"))),
span(h5(strong("Date:")),h5(textOutput("Date"))))
)
)
)
#SERVER
server <- function(input, output, session)
{
filteredData <- reactive({
m <- data %>% filter(
ID_no %in% input$ID
)
m
})
output$Staff_name <- renderText({ filteredData()$employee_name })
output$Date <- renderText({ filteredData()$date })
}
#Run the Shiny App to Display Webpage
shinyApp(ui=ui, server=server)
【问题讨论】:
-
您在服务器端的响应部分使用
stats::filter或dplyr::filter吗?如果您使用stats::filter,您将获得mts类的对象,然后使用 ...()$Date 进行子集化将不起作用。如果您使用dplyr::filter获取子集,则应将renderText({ filteredData()$Date })更改为renderText({filteredData()$date })。 -
在您的数据集中没有名为
Date的变量,但date -
@MichalMajka 很抱歉,这个错字已经更正,但没有解决原来的问题。我正在为过滤器使用 dplyr 包。
-
您还应该附加
dplyr包或明确写dplyr::filter。如果你不这样做,那么闪亮将使用stats::filter函数。dplyr将自动从magrittr包中导入管道。