【发布时间】:2020-08-13 13:49:23
【问题描述】:
我对 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 丹尼尔
【问题讨论】:
标签: r shiny global-variables flexdashboard