如何在同一个向量中引入非数字参数和可反应的数字参数?
How to introduce non-numeric arguments in the same vector with numeric arguments for a reactable?
感谢您再次阅读我的文章
我正在使用 table,其中在“Valor”列中,我有一个向量,其中数字从 0 到 1,用于具有百分比的条形图,如下图所示:
但我希望在值为“0%”的字段中不要使用进度条,而是只使用文本“nd”。有没有办法做到这一点?
使用的代码如下:
library(dplyr)
library(reactable)
library(htmltools)
# df for the table
Objetivo_1 <- data.frame(
Estrategia = c("1.1", "1.2", "1.3", "1.4", "1.5", "1.6"),
`Nombre del indicador` = c("Porcentaje de indicadores de la estrategia 1.1
que cumplen con la tendencia esperada entre el periodo
actual y el periodo inmediato anterior",
"Porcentaje de indicadores de la estrategia 1.2
que cumplen con la tendencia esperada entre el periodo
actual y el periodo inmediato anterior",
"Porcentaje de indicadores de la estrategia 1.3
que cumplen con la tendencia esperada entre el periodo
actual y el periodo inmediato anterior",
"Porcentaje de indicadores de la estrategia 1.4
que cumplen con la tendencia esperada entre el periodo
actual y el periodo inmediato anterior",
"Porcentaje de indicadores de la estrategia 1.5
que cumplen con la tendencia esperada entre el periodo
actual y el periodo inmediato anterior",
"Porcentaje de indicadores de la estrategia 1.6
que cumplen con la tendencia esperada entre el periodo
actual y el periodo inmediato anterior"
),
Valor = round(c(0.111,0.4111,0.25,0,0.2,432), digits = 2),
`Método de cálculo` = c("Número de indicadores que cumplen/Total de indicadores de la estrategia 1.1",
"Número de indicadores que cumplen/Total de indicadores de la estrategia 1.2",
"Número de indicadores que cumplen/Total de indicadores de la estrategia 1.3",
"Número de indicadores que cumplen/Total de indicadores de la estrategia 1.4",
"Número de indicadores que cumplen/Total de indicadores de la estrategia 1.5",
"Número de indicadores que cumplen/Total de indicadores de la estrategia 1.6"))
# Function for barchart
bar_chart <- function(label, width = "100%", height = "14px", fill = "#00bfc4", background = NULL) {
bar <- div(style = list(background = fill, width = width, height = height))
chart <- div(style = list(flexGrow = 1, marginLeft = "6px", background = background), bar)
div(style = list(display = "flex", alignItems = "center"), label, chart)
}
###table
reactable(
Objetivo_1,
bordered = TRUE,
searchable = TRUE,
language = reactableLang(
searchPlaceholder = "Busqueda",
noData = "Sin coincidencias",
pageInfo = "{rowStart} a {rowEnd} de {rows} entries",
pagePrevious = "\u276e",
pageNext = "\u276f",
# Accessible labels for assistive technologies such as screen readers.
# These are already set by default, but don't forget to update them when
# changing visible text.
pagePreviousLabel = "Página anterior",
pageNextLabel = "Siguiente página"
),
defaultSorted = "Valor",
columns = list(
Nombre.del.indicador = colDef(
name = "Nombre del indicador"
),
Método.de.cálculo = colDef(
name = "Método de cálculo"
),
Valor = colDef(
name = " Valor",
defaultSortOrder = "desc",
# Render the bar charts using a custom cell render function
cell = function(value) {
# Format as percentages with 1 decimal place
value <- paste0(format(value * 100, nsmall = 1), "%")
bar_chart(value, width = value, fill = "#822b2b", background = "#e1e1e1")
},
# And left-align the columns
align = "left"
)
)
)
稍微改变bar_chart
,
bar_chart <- function(label, width = "100%", height = "14px", fill = "#00bfc4", background = NULL) {
if (label == "0.0%"){
div('nd')
} else{
bar <- div(style = list(background = fill, width = width, height = height))
chart <- div(style = list(flexGrow = 1, marginLeft = "6px", background = background), bar)
div(style = list(display = "flex", alignItems = "center"), label, chart)
}
}
您可能会得到 nd 而不是 bar
感谢您再次阅读我的文章
我正在使用 table,其中在“Valor”列中,我有一个向量,其中数字从 0 到 1,用于具有百分比的条形图,如下图所示:
但我希望在值为“0%”的字段中不要使用进度条,而是只使用文本“nd”。有没有办法做到这一点? 使用的代码如下:
library(dplyr)
library(reactable)
library(htmltools)
# df for the table
Objetivo_1 <- data.frame(
Estrategia = c("1.1", "1.2", "1.3", "1.4", "1.5", "1.6"),
`Nombre del indicador` = c("Porcentaje de indicadores de la estrategia 1.1
que cumplen con la tendencia esperada entre el periodo
actual y el periodo inmediato anterior",
"Porcentaje de indicadores de la estrategia 1.2
que cumplen con la tendencia esperada entre el periodo
actual y el periodo inmediato anterior",
"Porcentaje de indicadores de la estrategia 1.3
que cumplen con la tendencia esperada entre el periodo
actual y el periodo inmediato anterior",
"Porcentaje de indicadores de la estrategia 1.4
que cumplen con la tendencia esperada entre el periodo
actual y el periodo inmediato anterior",
"Porcentaje de indicadores de la estrategia 1.5
que cumplen con la tendencia esperada entre el periodo
actual y el periodo inmediato anterior",
"Porcentaje de indicadores de la estrategia 1.6
que cumplen con la tendencia esperada entre el periodo
actual y el periodo inmediato anterior"
),
Valor = round(c(0.111,0.4111,0.25,0,0.2,432), digits = 2),
`Método de cálculo` = c("Número de indicadores que cumplen/Total de indicadores de la estrategia 1.1",
"Número de indicadores que cumplen/Total de indicadores de la estrategia 1.2",
"Número de indicadores que cumplen/Total de indicadores de la estrategia 1.3",
"Número de indicadores que cumplen/Total de indicadores de la estrategia 1.4",
"Número de indicadores que cumplen/Total de indicadores de la estrategia 1.5",
"Número de indicadores que cumplen/Total de indicadores de la estrategia 1.6"))
# Function for barchart
bar_chart <- function(label, width = "100%", height = "14px", fill = "#00bfc4", background = NULL) {
bar <- div(style = list(background = fill, width = width, height = height))
chart <- div(style = list(flexGrow = 1, marginLeft = "6px", background = background), bar)
div(style = list(display = "flex", alignItems = "center"), label, chart)
}
###table
reactable(
Objetivo_1,
bordered = TRUE,
searchable = TRUE,
language = reactableLang(
searchPlaceholder = "Busqueda",
noData = "Sin coincidencias",
pageInfo = "{rowStart} a {rowEnd} de {rows} entries",
pagePrevious = "\u276e",
pageNext = "\u276f",
# Accessible labels for assistive technologies such as screen readers.
# These are already set by default, but don't forget to update them when
# changing visible text.
pagePreviousLabel = "Página anterior",
pageNextLabel = "Siguiente página"
),
defaultSorted = "Valor",
columns = list(
Nombre.del.indicador = colDef(
name = "Nombre del indicador"
),
Método.de.cálculo = colDef(
name = "Método de cálculo"
),
Valor = colDef(
name = " Valor",
defaultSortOrder = "desc",
# Render the bar charts using a custom cell render function
cell = function(value) {
# Format as percentages with 1 decimal place
value <- paste0(format(value * 100, nsmall = 1), "%")
bar_chart(value, width = value, fill = "#822b2b", background = "#e1e1e1")
},
# And left-align the columns
align = "left"
)
)
)
稍微改变bar_chart
,
bar_chart <- function(label, width = "100%", height = "14px", fill = "#00bfc4", background = NULL) {
if (label == "0.0%"){
div('nd')
} else{
bar <- div(style = list(background = fill, width = width, height = height))
chart <- div(style = list(flexGrow = 1, marginLeft = "6px", background = background), bar)
div(style = list(display = "flex", alignItems = "center"), label, chart)
}
}
您可能会得到 nd 而不是 bar