выберите данные, которые только столбцы, имена которых соответствуют условию с фиксированным столбцом - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть блестящее приложение, в котором пользователь выбирает какое-то значение и на основании этого фильтруется информационный кадр.Фильтр происходит по именам столбцов.Но мне нужно иметь фиксированный столбец вместе с каждым выбором.

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     

Если я выберу C в выпадающем меню, мне нужно получить

A  C   
-----
1  4   
3  5    
4  2    
3  1   

Столбец A должен быть исправлен с любымрезультат

1 Ответ

0 голосов
/ 14 декабря 2018

Попробуйте:

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Шаблон

Если input$su представляет собой такой символ, как: «ASD GHG BVG JJJ», вам необходимо преобразовать его в полезное регулярное выражение

Попробуйте изменить:

grep(input$su, names(fau))

до

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

В результате получается шаблон: "ASD|GHG|BVG|JJJ".Я предполагаю, что каждая трехбуквенная группа является именем столбца

...