在相同的无功功能中创建多个数据帧并分别输出

时间:2017-02-03 19:22:57

标签: dataframe shiny reactive

在服务器端,我获取用户输入的数据:

stressed.flag <- reactive({input$flags})

然后我使用此输入在响应语句中创建多个数据帧:

getdata <- reactive({
df <- readWorksheetFromFile(x, y)   
df1 <- df[which(df[,1] %in% stressed.flag()),1:11]
)}

以下是问题 - &gt;我想将数据帧df1和df2输出给用户,但我无法弄清楚这样做的语法。我可以尝试使用renderDataTable命令输出一个数据帧(在服务器端并链接到UI端)但是也不起作用。

  output$bogus = renderDataTable({
            df1()
        })

我想我的问题是如何告诉机器在输出$ bogus语句中抓取哪个数据帧。也许我想要df1,也许我想要df2,也许都来自getdata被动声明

1 个答案:

答案 0 :(得分:2)

您可以使用列表返回一对对象list(df1=..., df2=...),然后使用getdata()[['df1']]

但是通过反应来建立一个数据集通常是一个好主意,所以这就是我要做的事情:

stressed.flag <- reactive({input$flags})
df <- reactive(readWorksheetFromFile(x, y)) 
df1 <- reactive({ 
   data <- df();
   data[data[,1] %in% stressed.flag(),1:11]})
output$full= renderDataTable(df())
output$stressed= renderDataTable(df1())

您也可以将data[data[,1] %in% stressed.flag(),1:11]替换为data[data$col1Name==stressed.flag(),1:11]