我有一个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列应固定为任何结果
答案 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"
。我假设每个三个字母组都是一个列名