这个问题关系到这一个.这两者可以生成相同的功能,但实现略有不同.一个显着的区别是a reactiveValue是一个可以有多个值的容器,比如input$.在闪亮的文档中,功能通常使用reactive(),但在大多数情况下我觉得reactiveValues()更方便.这里有捕获吗?我可能没有注意到这两者之间是否存在其他重大差异?这两个代码片段是否相同?
查看 使用以下实现的相同示例代码:
反应性表达:
library(shiny)
ui <- fluidPage(
shiny::numericInput(inputId = 'n',label = 'n',value = 2),
shiny::textOutput('nthValue'),
shiny::textOutput('nthValueInv')
)
fib <- function(n) ifelse(n<3, 1, fib(n-1)+fib(n-2))
server<-shinyServer(function(input, output, session) {
currentFib <- reactive({ fib(as.numeric(input$n)) })
output$nthValue <- renderText({ currentFib() })
output$nthValueInv <- renderText({ 1 / currentFib() })
})
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)反应值:
library(shiny)
ui <- fluidPage(
shiny::numericInput(inputId = 'n',label = 'n',value = 2),
shiny::textOutput('nthValue'),
shiny::textOutput('nthValueInv') …Run Code Online (Sandbox Code Playgroud)我在server.R中设置了UI以获得更多控制权,但在server.R中定义时,shinyDashboard不起作用.我使用navBarPage这个方法没有问题.
这段代码有效
library(shiny)
library(shinydashboard)
ui <- dashboardPage( dashboardHeader( ),
dashboardSidebar(),
dashboardBody() )
server <- shinyServer(function(input, output) { })
runApp(list(ui= ui, server = server))
Run Code Online (Sandbox Code Playgroud)
但这个只是显示一个空页
ui <- uiOutput('dash')
server <- shinyServer(function(input, output) {
output$dash <- renderUI({
dashboardPage(dashboardHeader( ),
dashboardSidebar(),
dashboardBody() )
})
})
runApp(list(ui= ui, server = server))
Run Code Online (Sandbox Code Playgroud)
这是一个使用navBarPage的例子,工作正常
ui <- uiOutput('nav')
server <- shinyServer(function(input, output) {
output$nav <- renderUI({
navbarPage("App Title",
tabPanel("Tab 1"),
tabPanel("Tab 2") )
})
})
runApp(list(ui= ui, server = server))
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用反应性模型,其中一个输入影响多个输出,如备忘单所述。我需要使用renderUI,因为选择列表是动态呈现的(示例中未显示)。但是,在初始化期间,selectInput返回NULL而不是默认值。在第一个NULL值之后,输入将按预期工作。我是新手,可能做错了什么。
更新:其他控件意外地不仅返回NULL,而且在初始化后还返回NA。
请参见下面的代码。请参阅控制台输出,第一个输入返回NULL。
Listening on http://127.0.0.1:6211
NULL
chr "1"
chr "2"
chr "1"
library(shiny)
runApp(list(
ui = bootstrapPage(
fluidPage( uiOutput('ui.A') )
),
server = function(input, output){
output$ui.A = renderUI({
selectInput("A", label = h4("input A"),
choices = list(A_1=1, A_2=2),
selected = 1)
})
A.r <- reactive({input$A })
observe({
A <- A.r()
str(A)
})
}))
Run Code Online (Sandbox Code Playgroud) 我正在用这个 rmd 创建一个 html 文件
---
title: "test"
author: "me"
date: '`r Sys.Date()`'
output: html_document
---
```{r}
data(HairEyeColor)
rpivotTable::rpivotTable(data = HairEyeColor
, rows = "Hair"
,cols="Eye"
, vals = "Freq"
, aggregatorName = "Sum"
, rendererName = "Table"
, width="100%"
, height="400px")
```
Run Code Online (Sandbox Code Playgroud)
和
rmarkdown::render( input = 'file.RMD' , output_file = 'file.html'
, output_format= html_document( self_contained=TRUE), clean = FALSE
, quiet = FALSE )
Run Code Online (Sandbox Code Playgroud)
输出没问题,但我需要 Markdown 文件 (file.md) 稍后重新创建 html 文件(无法访问数据)
rmarkdown 生成两个 md 文件 [file.knit.md] 和 [file.utf8.md] 但是当我渲染这两个文件中的任何一个时,file.html 中缺少 …
如何观察取消选择selectInputin中的所有元素shiny?
例如
library(shiny)
ui=shinyUI(fluidPage(
selectInput("select","",choices = c(1,2),multiple = T)
))
server=function(input, output,session) {
observeEvent(input$select,{
print(input$select)
})
}
shinyApp(ui,server)
Run Code Online (Sandbox Code Playgroud)
动作:
1)选择1
2)选择2
3)取消选择2
4)取消选择1
控制台日志:
[1] "1"
[1] "1" "2"
[1] "1"
Run Code Online (Sandbox Code Playgroud)
因此,取消所有选择时将没有打印。
这是错误还是我以错误的方式做某事?