gpt4 book ai didi

shiny - 在 Shiny 中使用 Crosstalk 从 DT 表中选择行

转载 作者:行者123 更新时间:2023-12-05 03:07:10 28 4
gpt4 key购买 nike

我承认,三天前我确实在 RStudio 上发布了这个问题,但它还没有得到足够的爱,所以我在这里再次尝试。我希望没关系。原来的问题在这里(两者的文字相同,我只是保持透明)。 https://community.rstudio.com/t/selecting-rows-from-a-dt-table-using-crosstalk-in-shiny/4079

所以我想刷过 D3Scatter 中的点,并用它来过滤使用 DT 包生成的数据表的行与串扰。

就像这样,在 Shiny 之外完全有效:

library(crosstalk)
library(d3scatter)
library(DT)

shared_iris <- SharedData$new(iris)

bscols(d3scatter(shared_iris, ~Petal.Length, ~Petal.Width, ~Species, width = "100%",
x_lim = range(iris$Petal.Length), y_lim = range(iris$Petal.Width)),

datatable(shared_iris))

但是当我把它放在 Shiny 中时,我可以从表格中选择散点上的点,反之则不行:

library(shiny)
library(crosstalk)
library(d3scatter)
library(DT)

ui <- fluidPage(
fluidRow(
column(6, d3scatterOutput("scatter1")),
column(6, DT::dataTableOutput("scatter2"))
)
)

server <- function(input, output, session) {
jittered_iris <- reactive({
iris
})

shared_iris <- SharedData$new(jittered_iris)

output$scatter1 <- renderD3scatter({
d3scatter(shared_iris, ~Petal.Length, ~Petal.Width, ~Species, width = "100%",
x_lim = range(iris$Petal.Length), y_lim = range(iris$Petal.Width))
})

output$scatter2 <- DT::renderDataTable({
datatable(shared_iris)
})
}

shinyApp(ui, server)

他们在这里工作:https://rstudio-pubs-static.s3.amazonaws.com/215948_95c1ab86ad334d2f82856d9e5ebc16af.html

我很迷茫。我觉得我已经尝试了一切。有任何线索吗?

谢谢,

最佳答案

DT 中的串扰集成仅适用于客户端处理。尝试使用 DT::renderDataTableserver = FALSE

library(shiny)
library(crosstalk)
library(d3scatter)
library(DT)

ui <- fluidPage(
fluidRow(
column(6, d3scatterOutput("scatter1")),
column(6, DT::dataTableOutput("scatter2"))
)
)

server <- function(input, output, session) {
jittered_iris <- reactive({
iris
})

shared_iris <- SharedData$new(jittered_iris)

output$scatter1 <- renderD3scatter({
d3scatter(shared_iris, ~Petal.Length, ~Petal.Width, ~Species, width = "100%",
x_lim = range(iris$Petal.Length), y_lim = range(iris$Petal.Width))
})

output$scatter2 <- DT::renderDataTable({
datatable(shared_iris)
}, server = FALSE)
}

shinyApp(ui, server)

在服务器端处理中使用 Crosstalk 时 DT 应该抛出错误

Error in widgetFunc: Crosstalk only works with DT client mode: DT::renderDataTable({...}, server=FALSE)

但我认为这里坏了:https://github.com/rstudio/DT/commit/893708ca10def9cfe0733598019b62a8230fc52b

如果没有其他人,我想我可以就此提出问题。

关于shiny - 在 Shiny 中使用 Crosstalk 从 DT 表中选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48238055/

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