- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在这个很好的问题中:Shiny: Switching reactive datasets with Rhandsontable and external parameters数据帧和 rhandsontable 输出具有相同的结构。
我正在尝试解决类似的问题,但使用的数据集结构不同,并且数据集构建在嵌套列表中。考虑这个带有两个输入选择器的例子:
根据输入选择器的不同,可以生成四种可能的表。他们是:
表 1(列表 1,“第一”):
表 2(列表 1,“第二个”):
表 3(列表 2,“第三个”):
表4(列表2,“第四”):
每个表都通过 renderRHandsontable 元素出现在同一位置。我认为我的问题在于更新reactiveValue“值” - 你如何更新列表的元素而不是任何其他元素?这是一个显示正确的最小示例,但您无法更改任何元素(我正在尝试解决的问题)。
require(rhandsontable)
require(shiny)
# Create some fake lists
list_1 <- list()
list_2 <- list()
list_1[['first']] <- data.frame(matrix(1:4,ncol=4))
list_1[['second']] <- data.frame(matrix(1:2,ncol=2),bool=factor('a1',levels=c('a1','a2','a3')))
list_2[['third']] <- data.frame(matrix(7:9,ncol=3))
list_2[['fourth']] <- data.frame(matrix(10:11,ncol=2),bool=factor('b1',levels=c('b1','b2')))
ui <- fluidPage(sidebarLayout(sidebarPanel(
selectInput(
'list_selector', 'Select list:',
choices = c('list_1', 'list_2')
),
uiOutput("second_selectorUI")
),
mainPanel(rHandsontableOutput("out"))))
server <- function(input, output) {
values = reactiveValues()
values[["list_1"]] <- list_1
values[["list_2"]] <- list_2
# Feed user input back to the list
observe({
if (!is.null(input$out)) {
temp <- hot_to_r(input$out)
if (isolate(input$list_selector) %in% c('first','third')){
values[[isolate(input$list_selector)]][[isolate(input$list_selector)]] <- temp$values #Returns to wide format
} else {
values[[isolate(input$list_selector)]][[isolate(input$list_selector)]] <- temp
}
}
})
# Why isn't values[["list_1"]][[input$second_list_selector]] allowed?
list <- reactive({
if (input$list_selector == "list_1") {
values[["list_1"]]
} else if (input$list_selector == "list_2"){
values[["list_2"]]
}
})
output$second_selectorUI <- renderUI({
if (input$list_selector == 'list_1'){
selectInput(inputId = "second_list_selector", label="Select element 1",
choices = c('first', 'second'))
} else if (input$list_selector == 'list_2'){
selectInput(inputId = "second_list_selector", label="Select element 2",
choices = c('third', 'fourth'))
}
})
output$out <- renderRHandsontable({
if (!is.null(list()) && !is.null(input$second_list_selector)){
if (input$second_list_selector %in% c('first','third')){
df <- list()[[input$second_list_selector]]
df <- data.frame(values=as.numeric(df)) #Turns into long format
rhandsontable(df, stretchH = "all", rowHeaderWidth = 300, width=600)
} else if (input$second_list_selector %in% c('second','fourth')){
df <- list()[[input$second_list_selector]]
rhandsontable(df, stretchH = "all", rowHeaderWidth = 50, height = 300,width=600) %>%
hot_col("bool", allowInvalid = FALSE)
}
}
})
}
shinyApp(ui = ui, server = server)
最佳答案
这是一种方法:
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
selectInput("sel_1", label = "Select list:",
choices = c("list_1", "list_2")),
selectInput("sel_2", label = "Select element 1",
choices = names(list_1))
),
mainPanel(
rHandsontableOutput("hot")
)
)
)
server <- function(input, output, session) {
list_1$first <- data.frame(values = as.numeric(list_1$first))
list_2$third <- data.frame(values = as.numeric(list_2$third))
values <- reactiveValues(list_1 = list_1, list_2 = list_2)
observe({
x <- input$sel_1
label <- paste("Select element", substr(x, nchar(x) - 1, nchar(x)))
updateSelectInput(session, "sel_2", label,
choices = names(values[[x]]))
})
# Key part: storing back the data in `values` every time there is a change
observe({
if (!is.null(input$hot) && !is.null(input$hot$changes$changes))
values[[isolate(input$sel_1)]][[isolate(input$sel_2)]] <- hot_to_r(input$hot)
})
output$hot <- renderRHandsontable({
df <- values[[input$sel_1]][[input$sel_2]]
if (is.null(df)) return(NULL)
if (input$sel_2 %in% c("first", "third")) {
rhandsontable(df, stretchH = "all", rowHeaderWidth = 300, width = 600)
} else {
rhandsontable(df, stretchH = "all", rowHeaderWidth = 50, height = 300, width = 600) %>%
hot_col("bool", allowInvalid = FALSE)
}
})
}
rhandsontable
的上下文中很难控制 react 性。 .
关于r - 使用 rhandsontable 在不同格式的响应式(Reactive)数据集之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49981955/
我在 R Shiny 中使用 rhandsontable 并且我想在第一列中使用“Sum”更改行的颜色。由于行数不固定,因此根据行号选择“Sum”行不起作用。我已经尝试了附加的代码,不幸的是它不起作用
数据... DF % hot_cols(colWidths = c(100, 50, 50), manualColumnMove = FALSE, ma
我正在使用 rhandsontable 包,并想添加一个上下文菜单选项,用于将多行添加到生成的 handsontable 中。我试着适应 this没有运气的例子进入我的 R 等价物。我相信我的 jav
假设我有以下 Shiny 的应用程序: library(shiny) library(rhandsontable) ui % hot_col("val", readOnly = TRUE)
我用 输出$hot % hot_cols(colWidths = ifelse(names(DF$DF) %in% DF$Select == T, 150, 0.1)) }) } sh
我正在努力根据单元格值在我 Shiny 的应用程序中为整行 rhandsontable 着色。 在下面的示例中,我想格式化整行而不是一个单元格。 library(rhandsontable) DF =
我正在尝试根据相邻逻辑列 ('Tick') 的选择在 rhandsontable 中收集列 ('Type') 的值。我想根据勾选的行创建所有类型的向量。 我将使用该向量对其他 rhandsontabl
我在 Shiny 应用程序中使用 rhandsontable,我想知道在这种情况下如何使用 Handsontable 的 getSelected() 方法,因为我打算在 data.frame 上应用更
我想根据值对整行应用颜色突出显示,并保留 rhandsontable 的复选框功能。在下面的简单示例中,我希望第 3 行为粉红色,第 4 行为绿色。 library(rhandsontable) DF
我在 Shiny 的应用程序中有一个 rhandsontable,它有 2 行。它使用 reactiveValues() 在其中加载值。 禁止通过拖动单元格来创建额外的行 fillHandle = l
我发现我可以对 rhandonstable 进行数字格式化,或者对 rhandsontable 的样式进行条件格式化,但不能同时进行这两种操作。使用下面的代码,似乎只使用了代码的 javascript
我正在尝试在 R shiny 中构建一个应用程序,我正在使用 handsontable 从用户那里获取输入。我的 handsontable 中的一列有下拉菜单,我需要从用户那里进行多项选择。 例如在我
我正在开发一个 Shiny 的应用程序,它从 SQL 数据库读取数据并将其呈现在 rhandsontable 中,并允许用户编辑数据。在将更改提交回数据库之前,我想添加一些功能: 如果 rhandso
当我尝试在 Shiny 应用程序中编辑 rhandsontable 的条目时,下拉菜单被缩短了。有没有办法让它们像 rhandsontable tutorial 中的日期选择器一样完全展开?这是应用程
我的 R 程序按预期工作。它显示了一个包含我的数据帧的表,并让我编辑这些值。 如何捕获这些值并将它们保存到我的数据帧或我的数据帧的副本? require(shiny) library(rhandson
我正在尝试创建一个 Shiny 的应用程序,其中包含一个 rhandsontable。如果选择/检查了另一列中的相应值,我希望 rhandsontable 能够更新其中一列中的值。到目前为止,我已经能
我正在尝试创建一个 Shiny 的应用程序,其中包含一个 rhandsontable。如果选择/检查了另一列中的相应值,我希望 rhandsontable 能够更新其中一列中的值。到目前为止,我已经能
我在 Shiny 的应用程序中有一个 rhandsontable。我的目标是根据列的总和为列中的所有单元格着色。示例:如果列中值的总和为 1,则此列中的所有单元格都显示为绿色。 向用户显示的预期结果是
在本文底部的简化代码中,我相信是 js 用于格式化使用 rhandsontable 呈现的表格的输出。我在代码的 js 部分尝试了行/列格式并取得了一些成功。但是,如下图所示,对于添加的所有列,我将如
在这个很好的问题中:Shiny: Switching reactive datasets with Rhandsontable and external parameters数据帧和 rhandson
我是一名优秀的程序员,十分优秀!