选择仅名称与条件匹配的列具有固定列的数据

时间:2018-12-14 11:39:12

标签: r dataframe shiny rstudio

我有一个r闪亮的应用程序,用户可以在其中选择一些值,并根据该值对数据框进行过滤。过滤发生在列名上。但是我需要在每个选择中都有固定的列。

ctags

样本数据:

PATH

在下拉菜单中,我只有output$fault_template <- renderDataTable({ fau <- fau[,grepl(input$su, names(fau)) ] datatable(fau[,-1:-1],class = 'cell-border stripe') })

如果我在下拉列表中选择A B C D ----------------- 1 3 4 5 3 4 5 6 4 5 2 2 3 4 1 9 ,则需要获得

B,C,D

如果我在下拉列表中选择B,则需要获得

 A B   
-----
1  3     
3  4    
4  5     
3  4     

A列应固定为任何结果

1 个答案:

答案 0 :(得分:1)

尝试一下:

output$fault_template <- renderDataTable({
    fau <-  fau[, c(1, grep(input$su, names(fau))) ]
    datatable(fau[,-1:-1],class = 'cell-border stripe')

  })

通过将grepl更改为grep,您将获得列索引。假设列A具有索引1,然后使用c(1, ...

将其添加到选择中

如果列A的列索引可能会更改,请尝试:

c(grep("A", names(fau)), grep(input$su, names(fau)))

输入模式

如果input$su是类似“ ASD GHG BVG JJJ”的字符,则需要将其转换为有用的正则表达式

尝试更改:

grep(input$su, names(fau))

grep( gsub(" +", "|", input$su), names(fau))

这将产生一个模式:"ASD|GHG|BVG|JJJ"。我假设每个三个字母组都是一个列名