情况:
我正在绘制来自给定数据集的数据。我根据行总和的比例将每个单元格连续着色。这很好用。代码发布在下面。
问题:
我想将细胞的值表示为百分比。例如,我需要0.547
而不是54.7 %
。
问题:
如何修改代码以显示百分比?
library(shiny)
library(DT)
library(formattable)
shinyApp(
ui = fluidPage(
fluidRow(
column(12,
DT::dataTableOutput('mytable')
)
)
),
server = function(input, output) {
myIris=iris[c(1,89,124),c("Species","Sepal.Length","Sepal.Width","Petal.Length","Petal.Width")]
myIris$sumOfRow=myIris$Sepal.Length+myIris$Sepal.Width+myIris$Petal.Length+myIris$Petal.Width
myIris$Sepal.Length=myIris$Sepal.Length/myIris$sumOfRow
myIris$Sepal.Width=myIris$Sepal.Width/myIris$sumOfRow
myIris$Petal.Length=myIris$Petal.Length/myIris$sumOfRow
myIris$Petal.Length=myIris$Petal.Length/myIris$sumOfRow
myIris$Petal.Width=myIris$Petal.Width/myIris$sumOfRow
myFormattable <- formattable(myIris, lapply(1:nrow(myIris), function(row, col=1:5) {
area(row, col=1:5) ~ color_tile("transparent", "red")
}))
myDatatable=as.datatable(myFormattable)
output$mytable=DT::renderDataTable({
myDatatable
})
}
)
答案 0 :(得分:0)
您可以使用formatPercentage()
。您只需要将列乘以100即可。
library(shiny)
library(DT)
library(formattable)
shinyApp(
ui = fluidPage(
fluidRow(
column(12,
DT::dataTableOutput('mytable')
)
)
),
server = function(input, output) {
myIris=iris[c(1,89,124),c("Species","Sepal.Length","Sepal.Width","Petal.Length","Petal.Width")]
myIris$sumOfRow=myIris$Sepal.Length+myIris$Sepal.Width+myIris$Petal.Length+myIris$Petal.Width
myIris$Sepal.Length=myIris$Sepal.Length/myIris$sumOfRow
myIris$Sepal.Width=myIris$Sepal.Width/myIris$sumOfRow
myIris$Petal.Length=myIris$Petal.Length/myIris$sumOfRow
myIris$Petal.Length=myIris$Petal.Length/myIris$sumOfRow
myIris$Petal.Width=myIris$Petal.Width/myIris$sumOfRow
myFormattable <- formattable(myIris, lapply(1:nrow(myIris), function(row, col=1:5) {
area(row, col=1:5) ~ color_tile("transparent", "red")
}))
#myDatatable=as.datatable(myFormattable)
output$mytable=DT::renderDataTable({
myFormattable$Sepal.Width_p <- myFormattable$Sepal.Width*100
datatable(myFormattable) %>% formatPercentage("Sepal.Width_p")
})
}
)
编辑:
您可以简单地使用函数percent
。
myIris$Sepal.Width_p <- percent(myIris$Sepal.Width)
myFormattable <- formattable(myIris, lapply(1:nrow(myIris), function(row, col=1:5) {
area(row, col=1:5) ~ color_tile("transparent", "red")
}))
然后:
myDatatable=as.datatable(myFormattable)
myDatatable
答案 1 :(得分:0)
尝试:
output$mytable <- DT::renderDataTable({
datatable(myFormattable) %>% formatPercentage('Sepal.Length', 2)
})
但是,这会改变您的颜色条样式。我不熟悉formattable包,但你可以参考How to Style DT使用DT的方法来应用你的样式。