gpt4 book ai didi

r - Shiny 的 rhandsontable 对自身有反应

转载 作者:行者123 更新时间:2023-12-02 17:02:53 25 4
gpt4 key购买 nike

我正在尝试创建一个 Shiny 的应用程序,其中包含一个 rhandsontable。如果选择/检查了另一列中的相应值,我希望 rhandsontable 能够更新其中一列中的值。到目前为止,我已经能够使用 react /观察事件来更改两个对象之间的输出值,但我无法绕过它,即如何使 rhandsontable 的一次列对同一个表中的另一列产生 react ?

这是我正在尝试构建的一个简单示例:

library(shiny)
library(rhandsontable)

ui <- fluidPage(
rHandsontableOutput('table')

)

server <- function(input,output,session)({

data <- data.frame(c1=c(5,10,15), c2=c(3,6,9) , diff=c(0,0,0), select= as.logical( c(FALSE,FALSE,FALSE)))

output$table <- renderRHandsontable({
rhandsontable(data)
})


})

shinyApp(ui = ui, server = server)

所以如果我检查“选择”列,“差异”列应该产生列 c1 和 c2 之间的差异

最佳答案

据我了解,您的目标是根据其他一些列的值进行一些计算。因此,例如,如果选中第三列的某个框,您可能想要计算第 1 列和第 2 列的元素之间的差异。

如果您只有一个数据框,那会很容易,不是吗?好吧,这可以使用 react 值。主要思想是您可以将 rhandsontable 存储在后端的数据框中,修改数据框,然后将修改后的数据框再次渲染回 handsontable。

希望对您有所帮助:

有关 react 值的更详细示例,您可以查看这个:http://stla.github.io/stlapblog/posts/shiny_editTable.html还有这个:https://www.youtube.com/watch?v=BzE1JmC0F6Q&list=PL6wLL_RojB5wXR3NR3K38sIvexZ_45alY&index=3

library(rhandsontable)
library(shiny)


ui <- fluidPage(
mainPanel(
rHandsontableOutput("hot")
)
)

server = function(input, output, session){

df<- data.frame(c1=c(5,10,15), c2=c(3,6,9) , diff=c(0,0,0), select= as.logical( c(FALSE,FALSE,FALSE)))
values <- reactiveValues(data = df)

observe({
if(!is.null(input$hot)){
values$data <- as.data.frame(hot_to_r(input$hot))
isolate(values$data[,'diff'] <- ifelse(values$data[,'select'], values$data[,'c1']-values$data[,'c2'] ,0))
print(values$data)
output$hot <- renderRHandsontable({
rhandsontable(values$data)
})
}
})

output$hot <- renderRHandsontable({
rhandsontable(values$data)
})

}

shinyApp(ui, server)

关于r - Shiny 的 rhandsontable 对自身有反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53177158/

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