r - Shiny 不会在应用程序中显示结果,但结果会显示在控制台中
问题描述
我创建了一个 R 闪亮应用程序来生成 k-means 聚类结果。该应用程序没有产生结果。但是,它会在控制台中显示输出。此外,它在 Rmarkdown 中编织时也可以正常工作。如果您对代码部分有任何意见或任何其他解决此问题的建议。请让我知道。
这是我的代码。
library(shiny)
library(dplyr)
library(cluster)
ui <- pageWithSidebar(
headerPanel("Cluster Analysis"),
sidebarPanel(
fileInput('file1', 'Choose CSV File',
accept=c('text/csv','text/comma-separated-values,text/plain','.csv')),
tags$hr(),
checkboxInput('header', 'Header', TRUE),
helpText("You will be able to see the variable name after you add in a datafile"),
fluidRow(
column(6,checkboxGroupInput("variable","Select Variables:", c("1"="1","2"="2")))
),
sliderInput("kvalue", "Select number of clusters",
value = 3, min = 3, max= 6),
radioButtons('sep', 'Separator',
c(Comma=',', Semicolon=';',Tab='\t'), ','),
uiOutput("choose_columns")
),
mainPanel(
tabsetPanel(
tabPanel("Result", verbatimTextOutput("result")),
tabPanel("Data", tableOutput('contents'))
)
)
)
server <- function(input, output,session) {
dsnames <- c()
data_set <- reactive({
inFile <- input$file1
if (is.null(inFile))
return()
data_set <-read.csv(inFile$datapath, header=input$header,
sep=input$sep)
})
output$contents <- renderTable({data_set()})
observe({
dsnames <- names(data_set())
cb_options <- list()
cb_options[ dsnames] <- dsnames
updateCheckboxGroupInput(session, "variable",
label = "Select Variables",
choices = cb_options,
selected = "")
})
output$choose_dataset <- renderUI({
selectInput("dataset", "Data set", as.list(data_sets))
})
dfInput <- reactive({
data <- data_set()
if(is.null(data))
return()
data %>%
dplyr::select(input$variable)
}
)
output$result <- renderPrint(
{
dfin <- dfInput()
gp <- NULL
if (!is.null(dfin)){
df <- dfin
test <- na.omit(df)
test1 <- scale(test)
test2 <- daisy(test1)
seg.k <- kmeans(test2, centers=input$kvalue, nstart=25)
df$segment <- seg.k$cluster
test2 <- df%>%
dplyr::group_by(segment)%>%
dplyr::summarise_all(list(mean))
print(test2)
}
return(gp)
}
)
output$choose_columns <- renderUI({
if(is.null(input$dataset))
return()
colnames <- names(contents)
checkboxGroupInput("columns", "Choose columns",
choices = colnames,
selected = colnames)
})
}
shinyApp(ui, server)
解决方案
推荐阅读
- c# - 将文件 20181207_ProdAndPressuresExport.csv 重命名为 ProdAndPressuresExport.csv
- javascript - 避免使用 node.js & shelljs 同时执行 shell 命令
- javascript - 移动数组项时,嵌入的 Youtube 视频在组件内重新加载,使用 v-for 渲染
- c - 如何在 fork 上的子进程期间在字符串上打印 \n
- github - 将随机 GitHub 存储库编译成 AST 的风险?
- reactjs - 在 Gatsby 中将页面状态传递给布局
- recursion - Prolog递归乘法
- python - 根据上一行的值更新表
- python - tkinter 标签在睡眠前不更新
- haskell - 在 Haskell 中,从字符串中获取一个字符串和一个 Int