このDataTableはShinyにあり、行をクリックすると可変テキストボックスの最初の列から値を取得したいと考えています。 Shiny DataTableのセルから値を取得
だからスクリーンショットに見られるように、この場合には、私はこの行をクリックすると、私は今Error: object of type 'closure' is not subsettable
ある場所で
Factuur Factuur
を取得したいと思います。 私は行番号を取得するために管理:
UI:
p(verbatimTextOutput('chauffeurdetails'))
サーバー:
output$chauffeurdetails = renderText ({ chauffeurdetail = input$results_rows_selected })
誰もが私が代わりにのみ行の最初の列から値を取得することができるかと思いました数?
全体のRコード:
# install packages if needed
if (!require("DT")) install.packages("DT")
if (!require("tidyr")) install.packages("tidyr")
if (!require("dplyr")) install.packages("dplyr")
if (!require("readxl")) install.packages("readxl")
if (!require("shiny")) install.packages("shiny")
if (!require("expss")) install.packages("expss")
# activate packages
library("tidyr")
library("dplyr")
library("readxl")
library("DT")
library("shiny")
library("expss")
# Lees MI bestand
MIinport <- read_excel("~/Documents/MI.xlsx", col_types = c("skip", "skip", "text", "skip", "text", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "text", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "text","skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "text","skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip"))
# Hernoem kolommen
MIinport <- unite(MIinport, KlantRef, Klant, Referentie, sep=" | ", remove = TRUE)
colnames(MIinport)<- c("Chauffeur", "Kenteken", "Klant", "ARDNK")
# Filter locatiewerk
MIinport <- subset(MIinport, is.na(MIinport$Kenteken))
MIinport$Kenteken <- NULL
DNK <- subset(MIinport, ARDNK == "DNK")
DNK$ARDNK <- NULL
AR <- subset(MIinport, ARDNK == "AR")
AR$ARDNK <- NULL
DNKfreq1 <- ftable(DNK$Chauffeur, DNK$Klant, dnn = c("Chauffeur", "Klant"))
DNKfreq2 <- as.data.frame(DNKfreq1)
DNKdata <- subset(DNKfreq2, Freq>0)
colnames(DNKdata)<- c("Chauffeur", "Klant", "Aantal")
list.DNKklanten <- as.list(unique(sort(DNKdata$Klant)))
ARfreq1 <- ftable(AR$Chauffeur, AR$Klant, dnn = c("Chauffeur", "Klant"))
ARfreq2 <- as.data.frame(ARfreq1)
ARdata <- subset(ARfreq2, Freq>0)
colnames(ARdata)<- c("Chauffeur", "Klant", "Aantal")
list.ARklanten <- as.list(unique(sort(ARdata$Klant)))
# Onderscheid studenten - FALSE = Student | TRUE = Senior
ARdata$Student <- as.numeric(grepl('[.]', ARdata$Chauffeur))
ARstudent <- subset(ARdata, Student == 0)
ARstudent$Student <- NULL
ARdata$Student <- NULL
# App
library(shiny)
ui <- basicPage(
p (""),
sidebarLayout(
sidebarPanel(
div(
h3("Zoek instellingen"),
uiOutput("chooselist"),
checkboxInput("StudentOption", label = "Alleen studenten", value = FALSE),
radioButtons("ARofDNK", label = "AR of DNK", choices = c("AR", "DNK"), selected = "AR", inline = TRUE)
),
div(tags$hr(),
h3("Chauffeur details"),
p(textOutput('chauffeurdetails')))),
mainPanel(
DT::dataTableOutput("results")
)
)
)
server <- function(input, output, session) {
# update datatable
output$chooselist <- renderUI({
if (input$ARofDNK == "AR"){
tagList(
selectInput("select", "Selecteer een klant", choices = c(" ", list.ARklanten))
)
} else {
tagList(
selectInput("select", "Selecteer een klant", choices = c(" ", list.DNKklanten))
)
}
})
output$value <- renderPrint({ input$ARofDNK })
SelectedKlant <- reactive({
if (input$StudentOption == TRUE & input$ARofDNK == "AR") {
a <- subset(ARstudent, (ARstudent$Klant == input$select))
return(a)
}
else if (input$StudentOption == FALSE & input$ARofDNK == "AR") {
a <- subset(ARdata, (ARdata$Klant == input$select))
return(a)
} else if (input$ARofDNK == "DNK"){
a <- subset(DNKdata, (DNKdata$Klant == input$select))
return(a)
}
})
output$results <- DT::renderDataTable(SelectedKlant(), options = list(pageLength = 20, dom = 'tip', order = list(2,'desc')), rownames = FALSE, width = 500, elementId = "results", colnames=c('Naam', 'Locatie', 'Aantal'), selection = 'single')
# output$chauffeurdetails = renderText ({
# SelectedKlant()[input$results_rows_selected,1]
# })
output$chauffeurdetails = renderText ({
req(length(input$results_rows_selected)>0)
SelectedKlant()[input$results_rows_selected,1]
})
# output$chauffeurdetails = renderText ({
# chauffeurdetail = input$results_rows_selected
# })
session$onSessionEnded(function() {
stopApp()
})
session$on
}
# Run the application
shinyApp(ui = ui, server = server, options = list(launch.browser=TRUE))
編集: 例データ:https://www.dropbox.com/s/zjxusxcan0ps1s3/Input%20Test.xlsx?dl=0 これらのデータは、プライバシー、機密情報が含まれているので、私は小さな交換を作成しました。
エラーを出すコードを投稿できますか? – SBista
@SBista上記のコードは動作しており、行番号を示しています。私はあなたが 'ARstudent試すことができARstudent'があなたのデータセットである'と仮定すると、全体の光沢のあるコード – George
@SBista [入力$ results_rows_selectedを、1] ' – George