【发布时间】:2015-09-15 17:09:56
【问题描述】:
我正在尝试在 Shiny 中创建一个仪表板,用户可以在其中选择月/年并对该时间段执行一些预测分析。在这一点上,我有一些可以运行的东西,我可以使用 fileInput() 调用引入一个反应性数据集。我遇到的问题是按选定的零件号对数据进行子集化。因此,我引入了带有事件日期、零件编号和需求(数据列)的 .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 中,我只需调用 data$partNumber = '7800123489' 并将其作为子集,但我不确定如何使用我使用 Shiny 引入的反应性数据集来做到这一点。
【问题讨论】:
-
你试过什么失败了?根据您的需要,您可以命名您读入的对象,然后在同一个
reactive函数调用中通过input$name_of_textInput使用 textInput 框创建一个子集。或者只是基于input$name_of_textInput的data()的子集创建一个新对象... -
我没有尝试太多,因为我真的不知道从这里去哪里。不过我明白你的意思。我在主面板
textInput("part", "Enter Part Number")中创建了文本输入,然后是input$part...但我仍然对如何使用该调用对数据进行子集感到困惑?如果我想在reactive函数中执行此操作,我应该在哪里调用input$part? -
datasetname[datasetname$part == input$part,]? -
在我的情况下,我的响应式 .csv 输入的数据集名称是
data' and if I adddata[data$partNumber == input$part] 到上面函数的末尾,我收到错误object of type 'closure' is not subsettable.不过,我明白你的逻辑在哪里。 -
如果你在你的 OP 中的响应式函数中工作,那么你还没有给你的数据集命名......所以当你读入它时命名它,
dat = read.csv(...。虽然与您的问题不同,this answer 显示了一个基本示例,该示例在反应函数中使用数据集执行多个步骤。
标签: r csv forecasting shiny