gpt4 book ai didi

R Shiny 错误: Problems with a reactive function

转载 作者:行者123 更新时间:2023-12-01 23:54:56 25 4
gpt4 key购买 nike

我正在 R studio 中使用新的 shiny markdown 制作交互式图表。创建一个事件页面的想法是,您有两个输入字段来确定 a 的大小、b 的大小以及剩下的是 c 的大小。输入是百分比。输出是一个带有线条和条形图的图形,可以正常工作。但是,我有两个问题。

  1. 第二个输入必须依赖于第一个输入,因为您永远不能超过 100%。
  2. a和b的大小是在给定输入后确定的。如果输入发生变化,则必须重新确定 a、b 和 c。

我是 R 的新手,搜索过其他问题,但无法解决我的问题。这是我的代码以及我如何尝试解决它:

inputPanel(
numericInput("aa", label = "a:",
min = 1 , max =100 , value = 80 , step = 1),

numericInput("bb", label = "b:",
min = 1 , max = 100-input$aa , value = 15 , step = 1)
)

这是我的第一个问题。我想成为对第一个输入有反应的第二个数字输入。针对此问题,我尝试了以下选项:

  numericInput("bb", label = "b:",
min = 1 , max = observe(100-input$aa,suspended= TRUE) , value = 15 , step = 1)

这没有用。接下来我尝试的是:

  numericInput("bb", label = "b:",
min = 1 , reactive({max = 100-input$aa}) , value = 15 , step = 1)

这也报错了。在尝试了这个选项之后,我发现它很合乎逻辑,但它不起作用,但是,仍然找不到如何解决这个问题。

第二个问题在下一段代码中。

###change the column b
for(i in nrow(df)){reactive({
if(input$aa>df$a[i]){
df$b[i] = "a"
} else {if(input$aa+input$bb>df$a[i]){
df$b[i] = "b"
}else {df$b[i] = "c"}}})}

我想更改 df 中 b 列的值。这段代码没有给出任何错误,但是,它不是事件的,它不会更改 b 列。我尝试了以下方法:

###Change the column b
shinyServer(function(input, output) {
for(i in nrow(df)){reactive({
if(input$large>df$a[i]){
df$b[i] = "a"
} else {if(input$aa+input$bb>df$a[i]){
df$b[i] = "b"
}else {df$b[i] = "c"}}})}})

这似乎更忽略了代码。这是我尝试过的,我对 R 很陌生。我希望有人能帮助我解决这个问题。

提前致谢,评论后编辑

最短的程序(在我看来)

---
title: "a"
author: "b"
date: "6/24/2014"
output: html_document
runtime: shiny
---

```{r, echo=FALSE}

library(ggplot2)
library(shiny)
df= data.frame(a=c(1:20),b=c(1:20))

df$c=1 #just to make sure column c exist.
inputPanel(
numericInput("aa", label="a", min = 1, max = 100, value =50)
,

numericInput("bb",label= "b", min = 1, max = 100-input$aa, value = 10)
)

df$c <- reactive({
df$c <- input$aa
})

renderPlot({
ggplot(df) +
geom_line(aes(a, b, colour= c ))
})
```

涡流

最佳答案

这是一个使用 renderUI 的例子。我没有看过在 markdown 文档中使用 shiny,但我猜它会以一种巧妙的方式解析文档,以将适当的数量分配给 shinyUIserver 函数:

---
title: "a"
author: "b"
date: "6/24/2014"
output: html_document
runtime: shiny
---

```{r, echo=FALSE}
library(ggplot2)
library(shiny)
df= data.frame(a=c(1:20),b=c(1:20))

df$c=1 #just to make sure column c exist.
inputPanel(
numericInput("aa", label="a", min = 1, max = 100, value = 50)
, uiOutput('test')
)

output$test <- renderUI({
numericInput("bb",label= "b", min = 1, max = 100-as.integer(input$aa), value = 10)
})
myReact <- reactive({
out <- df
out$b <- out$b + input$aa
out
})
renderPlot({
ggplot(myReact()) + geom_line(aes(a, b, colour= c ))
})

```

enter image description here

关于R Shiny 错误: Problems with a reactive function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24383756/

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