gpt4 book ai didi

javascript - Shiny and rhandsontable - 基于列总和的条件单元格/列格式

转载 作者:行者123 更新时间:2023-11-30 19:08:27 25 4
gpt4 key购买 nike

我在 Shiny 的应用程序中有一个 rhandsontable。我的目标是根据列的总和为列中的所有单元格着色。示例:如果列中值的总和为 1,则此列中的所有单元格都显示为绿色。

向用户显示的预期结果是这样的:

expected displayed result

使用这样的 JS 格式似乎可以做到这一点:

rhandsontable(myrhandsontable) %>% 
hot_cols(renderer ="some JS script")

我以前从未做过任何 JS,我很难获得“some JS script”部分内的列的总和。

这是一个最小的可复制示例:

library(shiny)
library(rhandsontable)
library(tidyverse)

# basic user interface (not important here)
ui <- fluidPage(
rHandsontableOutput(outputId = "ex")
)

# server side calculations
server <- function(input, output) {
# create a dummy dataset
ex_data = data.frame(id = letters[1:3],
attr1 = c(0.5, 0.4, 0.3),
attr2 = c(0.6, 0.3, 0.1))

# create the rhandsontable object and define conditional formatting
output$ex = renderRHandsontable({
rhandsontable(ex_data) # %>% renderer ="JS script for conditional formatting")
})

我尝试使用这些帖子和教程没有成功:

欢迎任何想法:)

最佳答案

我们可以在这里看到这个解决方案rhandsontable - Custom Renderer但是,这个方案在我们用shiny实现的时候出现了问题,幸运的是,这个问题已经解决了here

library(shiny)
library(tidyverse)
library(rhandsontable)

# basic user interface (not important here)
ui <- fluidPage(
rHandsontableOutput(outputId = "ex")
)

# server side calculations
server <- function(input, output, session) {
# create the rhandsontable object and define conditional formatting
output$ex = renderRHandsontable({
# create a dummy dataset
ex_data = data.frame(id = letters[1:3],
attr1 = c(0.5, 0.4, 0.3),
attr2 = c(0.6, 0.3, 0.1))
#create index with columns sum is equal to 1
col_highlight <- unname(which(colSums(ex_data[c(2,3)])==1))

rhandsontable(ex_data, col_highlight = col_highlight,
width = 550, height = 300) %>%
hot_cols(renderer = "
function(instance, td, row, col, prop, value, cellProperties) {
Handsontable.renderers.NumericRenderer.apply(this, arguments);

if (instance.params) {
hcols = instance.params.col_highlight;
hcols = hcols instanceof Array ? hcols : [hcols];
}

if (instance.params && hcols.includes(col)) {
td.style.background = 'lightgreen';
}
}")
})

}
shinyApp(ui,server)

enter image description here

关于javascript - Shiny and rhandsontable - 基于列总和的条件单元格/列格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58746194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com