我正在尝试在Shiny中创建一个仪表板,用户可以选择一个月/年并在该时间段内执行一些预测分析。此时,我有一些运行的东西,我可以使用fileInput()调用引入一个反应数据集。我遇到的问题是通过选定的部件号对数据进行子集化。所以我带有了带有incidentDate,partNumber和demand(数据列)的.csv,现在我想使用选定的部件号对数据进行子集化(使用textInput作为我的被动值)。
data <- reactive({
file1 <- input$file
if(is.null(file1)){return()}
f = read.csv(file=file1$datapath, header = TRUE, stringsAsFactors = FALSE)
})
上面的代码是我从计算机上读取.csv的方式。该数据集现在是一个反应数据集,我可以使用data()将其列为表。
output$table <- renderTable({
if(is.null(data())){return()}
"how do I call the f from the above reactive function here?"
})
如果我使用textInput框使用“part”作为指向用户输入的指针,我如何将data()子集化为仅包含与该部件编号匹配的行?在常规的R中,我只是调用数据$ partNumber ='7800123489'并且它将是子集,但我不知道如何使用我带来Shiny的反应数据集来做它。
答案 0 :(得分:1)
我在另一个post和@aosmith
的帮助下想出了这一点,感谢所有人的帮助。
一旦我读入.csv,我将其在反应函数中进行子集化,然后在输出表中调用data()。我可以在零件textInput
中键入零件编号,然后在选择要读入的文件后,表格中只填充包含该零件编号的值。
IN UI SECTION
mainPanel(
textInput("part", "Enter Part Number"),
uiOutput("tb")
)
在服务器部分
server <- function(input, output) {
data <- reactive({
file1 <- input$file
if(is.null(file1)){return()}
read <- read.csv(file=file1$datapath, header = TRUE, stringsAsFactors = FALSE)
f <- subset(read, partNumber %in% input$partNumber)
return(f)
})
output$table <- renderTable({
if(is.null(data())){return()}
data()
})
因此,此代码的关键是读取文件,然后使用f
使用textInput
的响应创建子集%in% input$part
并将f
返回{{1} }}