У меня есть 2 кадра данных ниже:
Name<-c("John","Bob","Jack")
Number<-c(3,3,5)
NN<-data.frame(Name,Number)
d1<-c("a",NA,"b")
d2<-c("a","a","b")
d3<-c(NA,NA,"b")
d4<-c("a","c","b")
d5<-c(NA,"b","b")
NN2<-data.frame(Name,d1,d2,d3,d4,d5)
NN
содержит имена и количество входов не-NA для каждого имени в NN2
.Я создал блестящее приложение, которое отображает данные NN
.Я хочу иметь возможность нажимать на каждое имя и получать вторую таблицу с относительной строкой NN2
, как вы увидите, если нажать на John
.Проблема в том, что вместо того, чтобы узнать, какое имя я выбрал со строкой и столбцом, с которым я делаю: if(input$x3_cells_selected[,1]==1&input$x3_cells_selected[,2]==1)
, я хотел бы распознать его по имени автоматически.Это означает, что когда я нажимаю John
в 1-й таблице, алгоритм не увидит 1-й столбец-1-ю строку, но будет искать данные John
во 2-й таблице.
#ui.r
library(shiny)
fluidPage(
fluidRow(
DT::dataTableOutput('x3')
),
fluidRow(
DT::dataTableOutput('x4')
)
)
#server.r
library(shiny)
library(DT)
shinyServer(function(input, output, session) {
output$x3 = DT::renderDataTable(datatable(NN,selection = list(target="cell",mode="single")))
second<-reactive({
req(input$x3_cells_selected)
if(input$x3_cells_selected[,1]==1&input$x3_cells_selected[,2]==1){
NN2[1,2:6]
}
})
output$x4 = DT::renderDataTable(datatable(second(),rownames = F))
})