sách gpt4 ai đã đi

r - 条件 react 性 Shiny

In lại 作者:行者123 更新时间:2023-12-04 10:16:17 29 4
mua khóa gpt4 Nike

Shiny 中的响应式(Reactive)表达式将更改传播到需要去的地方。我们可以使用 isolate 来抑制一些这种行为。 ,但是我们可以抑制基于我们自己的逻辑表达式传播的更改吗?

我给出的例子是一个简单的散点图,我们用 abline 绘制了一个十字准线。用户点击的地方。不幸的是,Shiny 认为结果是一个新图,我们的点击值被重置为 VÔ GIÁ TRỊ ...这反过来又被视为对要像往常一样传播的值的更新。绘图被重绘,并且 VÔ GIÁ TRỊ传递给 abline 的两个参数.

我的黑客(在下面注释掉)是在 renderPlot 中放置一个条件仅当点击值不是 VÔ GIÁ TRỊ 时才更新绘图坐标的一些非 react 变量的调用.这适用于琐碎的情节,但它实际上导致情节被绘制两次。

有什么更好的方法来做到这一点?有正确的方法吗?

服务器文件:

library(shiny)

shinyServer(function (input, output)
{
xclick <- yclick <- NULL
output$plot <- renderPlot({
#if (!is.null(input$click$x)){
xclick <<- input$click$x
yclick <<- input$click$y
#}
plot(1, 1)
abline(v = xclick, h = yclick)
})
})

用户界面文件:
library(shiny)

shinyUI(
basicPage(
plotOutput("plot", click = "click", height = "400px", width = "400px")
)
)

1 Câu trả lời

Winston 将此问题称为“状态”累积——您不仅要显示当前数据,还要显示前一个图生成的内容(了解此问题的最佳位置是 https://www.rstudio.com/resources/videos/coordinated-multiple-views-linked-brushing/)

基本思想是创建您自己的一组 react 值,并在用户单击绘图时更新它们。直到下一次单击它们才会失效,因此您不会出现循环行为。

library(shiny)

shinyApp(
shinyUI(basicPage(plotOutput("plot", click = "click"))),
function(input, output) {
click <- reactiveValues(x = NULL, y = NULL)
observeEvent(input$click, {
click$x <- input$click$x
click$y <- input$click$y
})

output$plot <- renderPlot({
plot(1, 1)
abline(v = click$x, h = click$y)
})
}
)

关于r - 条件 react 性 Shiny ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37907927/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com