gpt4 book ai didi

r - vis网络 : How do I extract visGetPositions() from shiny into R coordinates matrix?

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

require(shiny)
require(visNetwork)

server <- function(input, output) {

output$network <- renderVisNetwork({
nodes <- data.frame(id = 1:3)
edges <- data.frame(from = c(1,2), to = c(1,3))

visNetwork(nodes, edges) %>% visNodes(color = "green")
})

output$test <- renderPrint({
input$network_positions
})
observe({
input$goButton
visNetworkProxy("network") %>%
visGetPositions()
})

}

ui <- fluidPage(
fluidRow(
column(10,visNetworkOutput("network", height = "100%"),
verbatimTextOutput("test")),
column(2, actionButton("goButton", "Go!"))
)

)

shinyApp(ui = ui, server = server)

所以 visGetPositions 只能在 Shiny 的情况下工作。按 Go 后,它会计算并打印出每个节点的位置。如何将其提取到 R 矩阵中以便将其用作坐标?

最佳答案

一种可能是将坐标存储在 reactiveValues 中,并使用 rbind 将它们绑定(bind)在一起。例如,将您的观察者替换为以下内容,

vals <- reactiveValues(coords=NULL)
observeEvent(input$goButton, {
visNetworkProxy("network") %>% visGetPositions()
vals$coords <- if (!is.null(input$network_positions))
do.call(rbind, input$network_positions)
})

它会检查 NULL,因此 do.call 不会出错。然后,output$test更改为以下内容以检查结果

output$test <- renderPrint( vals$coords )

更新

使用invalidateLater在不使用按钮的情况下更新位置的可能方法:

output$test <- renderPrint( vals$coords )
vals <- reactiveValues(coords=NULL)
observe({
invalidateLater(1000)
visNetworkProxy("network") %>% visGetPositions()
vals$coords <- if (!is.null(input$network_positions))
do.call(rbind, input$network_positions)
})

关于r - vis网络 : How do I extract visGetPositions() from shiny into R coordinates matrix?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35961814/

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