gpt4 book ai didi

r - 在 Shiny 的应用程序中保留 rhandsontable 的行顺序

转载 作者:行者123 更新时间:2023-12-04 09:34:52 25 4
gpt4 key购买 nike

我正在运行来自 here 的示例.

library(rhandsontable)
library(shiny)

runApp(shinyApp(
ui = fluidPage(rHandsontableOutput("hot")),
server = function(input, output, session) {
fname <- "mtcars2.csv"
values <- reactiveValues()
setHot <- function(x) values[["hot"]] = x

observe({
if(!is.null(values[["hot"]])) write.csv(values[["hot"]], fname)
})

output$hot <- renderRHandsontable({
if (!is.null(input$hot)) {
DF <- hot_to_r(input$hot)
} else {
DF <- read.csv("mtcars.csv", stringsAsFactors = FALSE)
}
setHot(DF)
rhandsontable(DF) %>%
hot_table(highlightCol = TRUE, highlightRow = TRUE) %>%
hot_cols(columnSorting = TRUE)
})
}
))

我希望对表所做的更改保存在文件 mtcars2.csv 中.我也想保留行顺序。在 project home page它说“排序只影响小部件,不会对原始数据集重新排序”。我可以以某种方式获取表格的当前 View 并保存它吗?

最佳答案

回答这个问题的最佳方式是在 https://github.com/jrowen/rhandsontable 提交问题。 .目前,这些 lines仅定义 handsontable 的部分列表事件。此列表不包括 afterColumnSort这将是你所需要的。这是部分回答您的问题的快速技巧。

library(rhandsontable)
library(shiny)
library(htmlwidgets)

runApp(shinyApp(
ui = fluidPage(
rHandsontableOutput("hot"),
tags$script(
'
setTimeout(
function() {
HTMLWidgets.find("#hot").hot.addHook(
"afterColumnSort",
function(){
console.log("sort",this);
Shiny.onInputChange(
"hot_sort",
{
data: this.getData()
}
)
}
)
},
1000
)
'

)
),
server = function(input, output, session) {
observeEvent(
input$hot_sort
,{
print(input$hot_sort$data)
}
)

output$hot <- renderRHandsontable({
if (!is.null(input$hot)) {
DF <- hot_to_r(input$hot)
} else {
DF <- mtcars
}
rhandsontable(DF) %>%
hot_table(highlightCol = TRUE, highlightRow = TRUE) %>%
hot_cols(columnSorting = TRUE)
})
}
))

关于r - 在 Shiny 的应用程序中保留 rhandsontable 的行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36176298/

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