Hi Friends,
How should the input variables in Shiny be accessed for operations using data.table package . Below is the code from one of demo example trying to replace Base R column selection with data.table but get an error. Error lies in selectedData reactive.
IF i replace the input$xcol and input$ycol by any of column names directly it works. but unable to get it working with input$...
library(shiny)
library(data.table)
vars <- setdiff(names(iris), "Species")
ui<-fluidPage(
pageWithSidebar(
headerPanel('Iris k-means clustering'),
sidebarPanel(
selectInput('xcol', 'X Variable', vars),
selectInput('ycol', 'Y Variable', vars, selected = vars[[2]]),
numericInput('clusters', 'Cluster count', 3, min = 1, max = 9)
),
mainPanel(
plotOutput('plot1')
)
)
)
server<- function(input, output, session) {
selectedData <- reactive({
iris1<- as.data.table(iris)
iris1[,.(input$xcol, input$ycol),]
})
clusters <- reactive({
kmeans(selectedData(), input$clusters)
})
output$plot1 <- renderPlot({
palette(c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3",
"#FF7F00", "#FFFF33", "#A65628", "#F781BF", "#999999"))
par(mar = c(5.1, 4.1, 0, 1))
plot(selectedData(),
col = clusters()$cluster,
pch = 20, cex = 3)
points(clusters()$centers, pch = 4, cex = 4, lwd = 4)
})
}
shinyApp(ui=ui,server=server)