【发布时间】:2018-08-09 16:17:58
【问题描述】:
我想将一些 flexdashboard 响应式输入值复制到数据框,以便可以将它们导出到文件中。此代码适用于 y 作为标量:
y <- reactive({input$data1})
但是这段代码没有使用 df 一个空列声明为数字的数据框:
df[1, 1] <- reactive({input$data1})
错误:子赋值类型修复中的不兼容类型(从闭包到双精度)
有人可以帮助我使用正确的语法来完成作业吗?谢谢...
不确定如何提交可重现的代码。这是此问题的整个 .Rmd:
---
title: "Untitled"
runtime: shiny
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
---
```{r setup, include=FALSE}
library(flexdashboard)
library(shiny)
df <- data.frame(MinVals = numeric(), MaxVals = numeric())
```
Inputs {.sidebar data-width=275}
-----------------------------------------------------------------------
```{r}
tags$h3("Test It")
sliderInput("data1",
label = "Some data",
value = 50,
min = 0,
max = 100,
step = 5,
width = 200)
```
Column {data-width=350}
-----------------------------------------------------------------------
### Chart A
```{r}
df[1, 1] <- reactive({input$data1}) # does not work
y <- reactive({input$data1}) # this works
renderValueBox({
x <- y()
valueBox(
value = x,
icon = "fa-area-chart",
color = "orange")
})
```
【问题讨论】:
-
没有可重复的例子,只能猜测。
df[, 1]似乎是 double 类型,input$data1不是?您是否尝试过类似:if(!is.null(input$data1)) df[1, 1] <- reactive({as.numeric(input$data1)})? -
感谢您的回复。您的代码行产生错误消息:“Operation not allowed without an active reactive context”
-
然后尝试删除 if 语句。或者,您将不得不共享可重现的代码,...
-
感谢您的额外回复。我编辑了原始帖子,添加了整个 .Rmd 文件代码。为任何站点协议错误道歉。感谢您的帮助。
-
不确定你想达到什么,但你可以试试:
observeEvent(input$data1, df[1, 1] <<- input$data1 # does not work )
标签: r shiny flexdashboard