复选框 Shiny R 的反应性 k 均值分析
Posted
技术标签:
【中文标题】复选框 Shiny R 的反应性 k 均值分析【英文标题】:Reactive k-means analysis on checkboxes Shiny R 【发布时间】:2021-12-13 13:29:43 【问题描述】:我有一些数据
df <- as.data.frame(cbind(
lat = rnorm(150, mean = 30, sd = 5),
lon = rnorm(150, mean = 10, sd = 5),
iris[, 1:4]))
我有一个 UI,它允许我根据 DF 中存在的列/变量(不包括纬度和经度)通过复选框从 excellent demo 中选择。
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
checkboxGroupInput("show_vars", "Selectable variables for k-means",
names(df[, 3:6]), selected = names(df[, 3:6])),
numericInput('clusters', 'Cluster count', 3, min = 1, max = 9),
),
# mainPanel(plotOutput("plot1"))))
mainPanel(DT::dataTableOutput('mytable1'))))
我可以看到这与以下内容一起使用
server <- function(input, output)
#### choose columns to display
output$mytable1 <- DT::renderDataTable(
DT::datatable(df[, input$show_vars, drop = FALSE])
)
shinyApp(ui, server)
我想按以下顺序做什么
1 - 对所选数据运行 k-means 分析
2 - 将集群输出 (kmeans_run$cluster
) 绑定到子集数据表
3 - ggplot
color=cluster
color=cluster
我可以很容易地在 r 中做到这一点
library(ggplot2)
df <- as.data.frame(cbind(
lat = rnorm(150, mean = 30, sd = 5),
lon = rnorm(150, mean = 10, sd = 5),
iris[, 1:4]))
km <- kmeans(df[, 3:4], 4)
df$cluster <- km$cluster
ggplot(df, aes(lon,
lat,
color=cluster)) +
geom_point()
我一直在扼杀这个有用的demo,它有点适用于 k-means,但我很难让它只用一个数据集运行它。
ui1 <- fluidPage(
sidebarLayout(
sidebarPanel(
checkboxGroupInput("show_vars", "Selectable variables for k-means",
names(df[, 3:6]), selected = names(df[, 3:6])),
numericInput('clusters', 'Cluster count', 3, min = 1, max = 9),
),
mainPanel(plotOutput("plot1"))))
server1 <- function(input, output, session)
# Combine the selected variables into a new data frame
selectedData <- reactive(df[, input$show_vars, drop = FALSE])
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(ui1, server1)
非常感谢,即使答案的第一部分也是王牌!
【问题讨论】:
【参考方案1】: clusters <- reactive(
kmeans(selectedData(), input$clusters)
)
output$ggplot <- renderPlot(
ggplot(contin_data,aes(x=bin_median_lon,
y=bin_median_lat))+geom_point(colour=clusters()$cluster),
height = 700, width = 700)
不同的数据,但明白了
【讨论】:
以上是关于复选框 Shiny R 的反应性 k 均值分析的主要内容,如果未能解决你的问题,请参考以下文章
r shiny sqlquery - 从 sql 查询结果中填充复选框
闪亮/ rscript - 使用checkboxGroupInput整数列表的反应图不起作用