从输入中收集值

问题描述

我对Shiny相当陌生,我有一个可能很愚蠢的问题: 我建立了一个flexdashboard来显示计算结果。首先,我在代码中手动设置输入值。下一步将是使仪表板能够使用光泽收集输入值。立即更改图和表是不合理的,但是要先收集数据,评估它们,如果它们完整且适合计算,我想重新计算并显示结果。 我能够在侧栏上显示“输入”字段并启动检查功能。为了检查数据集是否完整,我定义了一个全局可访问的data.frame来收集不同的值。通过使用质数,我想检查是否可以开始计算的特定部分。这也是检查功能的一部分。但是我希望在data.frame中收集值的愿望一直被忽略……我的代码有什么问题? 这是我要执行的操作(.rmd)的简单示例:

---
title: "example"
output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
runtime: shiny
---

```{r setup,include=FALSE}
library(flexdashboard)
library(shiny)
library(stringr)
source("ProcessThatValue.R")
generate_VALUEFRAME()
```

Column {data-width=250 .sidebar}
-----------------------------------------------------------------------

### I Want Those Values

```{r}
textInput(inputId = "input_Value",label = "The value goes here",value = "",placeholder = "Gimme that value")
```


Column {data-width=750}
-----------------------------------------------------------------------

### Chart B

```{r}
h3("Here is that value:")
renderText({
  if(check_VALUE_ONE(input$input_Value) == TRUE)
    input$input_Value
})
```

### Chart C

```{r}
h3("Is the value in the frame?:")
renderText({
   if(check_COMPLETE() == TRUE)
    "Success!"
 })
 ```

和功能:

generate_VALUEFRAME <- function()
{
  FRAME <<- data.frame(VALUES = c("FIRSTVALUE"),ENTRIES = c("NOTHING"),COMPLETE = c(0),IF_COMPLETE = c(2))
}

check_VALUE_ONE <- function(VALUE)
{
  letters <- str_count(VALUE)

 if(letters > 3)
  {
     FRAME[1,2] <- VALUE
     FRAME[1,3] <- FRAME[1,4]
     RETURN <- TRUE
  }
 else
    RETURN <- FALSE

  RETURN
 }

check_COMPLETE <- function()
{
  if(sum(FRAME$COMPLETE) == 2)
     RETURN <- TRUE
  else
     RETURN <- FALSE
}

正如renderText部分所述,很明显他进入了 check_VALUE_ONE ,因为显示该值需要使用TRUE,但FRAME根本没有改变。

任何建议将不胜感激。

THX丹尼尔

解决方法

闪亮更新值的方式是它生成有向的“反应图”。如果您的反应性值之一(例如与sliderInput关联的值)发生变化,则会沿反应性图的有向边“激发”,告诉所有到达的顶点也要更新。

由于您的数据应该是动态的,因此明智的做法是将其设为reactive(),例如

df <- reactive({
  # put your code returning a data.frame here
})

,然后使用df()调用它(而不是将其作为全局变量)。在该reactive()调用中,您可以使用req():此函数一方面可以检查是否设置了值,另一方面可以向其传递布尔表达式(例如的返回值)。您的check_COMPLETE()。如果req()失败,您的反应式对象将不会更新。

现在,我在您的代码中看到的一个问题是您的函数check_COMPLETE()没有返回任何内容(确切地说,它返回了NULL)。 我不太确定您要做什么或代码为何失败,但是也许您只需要返回RETURN

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...