首页 > 解决方案 > 阻止表格添加小数位

问题描述

我试图在 R 中使用 Shiny 显示频率表,但由于某种原因,它坚持将频率显示到小数点后两位。我试过使用round(),但这没有任何影响。我猜这可能与合并有关,因为当我备份并仅显示频率表时,显示的频率没有不必要的小数位......但我不确定哪个确切部分导致了问题,这就是为什么我在这个例子中包含了我对代码所做的几乎所有的争论。您需要搜索其中一种水果(例如苹果)才能显示表格并了解我的意思。

谢谢你的帮助!

现在的样子: 目前来看

library("shiny")
library("shinydashboard")

fruit <- as.character(c("apple", "pineapple", 
                        "orange", "watermelon", "apple", 
                        "grape", "orange", "apple", "grape"))

fruit_type <- as.character(c("apple", "pineapple", "orange", "watermelon", "grape", "banana", "coconut"))
fruit_rating <- 1:7
fruit_info <- data.frame(fruit_type, fruit_rating, stringsAsFactors = F)

sidebar <- dashboardSidebar(searchInput("search",
                                        btnSearch = icon("search"), 
                                        btnReset = icon("remove")))

body <- dashboardBody(tableOutput("table"))

ui <- dashboardPage(dashboardHeader(title = "Example"),
                    sidebar,
                    body
)

server <- function(input, output) {
  output$table <- renderTable({
    fruit_query <- input$search
    fruit_count <- plyr::count(fruit)
    colnames(fruit_count)[1] <- "fruit_type"
    fruit_count$fruit_type <- as.character(fruit_count$fruit_type)
    fruit_count <- merge(fruit_count, fruit_info, 
                               by = "fruit_type", all = T)
    fruit_count$freq <- ifelse(is.na(fruit_count$freq),
                               0, fruit_count$freq)
    searched_fruit <- fruit_count[fruit_count$fruit_type == fruit_query,]
    searched_fruit$freq <- round(searched_fruit$freq)
    return(searched_fruit)
  })
}

shinyApp(ui, server)

标签: rshiny

解决方案


你快到了,只需替换:

searched_fruit$freq <- round(searched_fruit$freq)

searched_fruit$freq <- as.integer(searched_fruit$freq)

另一种方法是使用renderTablesdigits参数来更改其在数字列上的默认行为,如下所示:

server <- function(input, output) {
  output$table <- renderTable({
    fruit_query <- input$search
    fruit_count <- plyr::count(fruit)
    colnames(fruit_count)[1] <- "fruit_type"
    fruit_count$fruit_type <- as.character(fruit_count$fruit_type)
    fruit_count <- merge(fruit_count, fruit_info, 
                         by = "fruit_type", all = T)
    fruit_count$freq <- ifelse(is.na(fruit_count$freq),
                               0, fruit_count$freq)
    searched_fruit <- fruit_count[fruit_count$fruit_type == fruit_query,]
  }, digits = 0)
}

推荐阅读