在闪亮的情况下仅从复选框组获取值一次
obtain the values from a checkboxgroup only once in shiny
我做了如下程序:
ui.r
library(shiny)
shinyUI(fluidPage(
mainPanel(
textOutput("text1"),
checkboxGroupInput("checkGroup",
label = h3("Alternatives"),
choices = list("A" = 1,
"B" = 2,
"C" = 3,
"D" = 4),
selected = NULL),
actionButton("action", label = "Next")
)
))
server.r
library(shiny)
shinyServer(function(input, output) {
observe({
if(input$action>0 & input$action<=2){
valores<-renderText({
input$checkGroup
})
data<-unlist(strsplit(valores(), split=" "))
print(data)
}
})
})
我已经设法捕获了值 selected 并将它们放入向量中,因此我解决了之前遇到的一个问题。
我现在遇到的问题是,它始终从复选框组输出哪些值 I select 或 deselect,但我只想捕获最后一个值 select在我按下“下一步”按钮后编辑。
有什么帮助吗?我已经查看了文档,但是它非常稀缺。
这是给那只猫剥皮的一种方法。
我们将 isolate
和 reactive
与 actionButton
一起使用,以确保在按下按钮之前不会计算任何内容。通过将输入本身与任何进一步的格式隔离开来,我们可以出于任何目的多次调用它。请注意,如果没有隔离,它将在输入更改时进行评估。
server.R
library(shiny)
shinyServer(function(input, output) {
# store as a vector to be called wherever desired
# evaluated whenever inputs change
datasetInput <- reactive({
perm.vector <- as.vector(input$checkGroup)
perm.vector
})
# call as a text output
output$textOut <- renderText({
input$action # makes sure nothing moves till the button is hit
# isolate prevents datasetInput from reactively evaluating
isolate(datasetInput())
})
# call in a different place as a data table output
output$dataTableOut <- renderDataTable({
input$action # makes sure nothing moves till the button is hit
isolate(df <- data.frame(inputs = datasetInput()))
df
}, options = list(
lengthMenu = list(c(5, 15, -1), c('5', '15', 'All')),
pageLength = 15)
)
})
ui.R
library(shiny)
shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
checkboxGroupInput("checkGroup",
label = h3("Alternatives"),
choices = list("A" = 1,
"B" = 2,
"C" = 3,
"D" = 4),
selected = NULL),
actionButton("action", label = "Next")
),
mainPanel(
h4("Print as text"), textOutput("textOut"),
h4("Print as data table"), dataTableOutput("dataTableOut")
)
)
))
我发现于:http://www.inside-r.org/packages/cran/shiny/docs/isolate
可以将一组句子隔离开来,所以下面的效果很好:
library(shiny)
shinyServer(function(input, output) {
observe({
if(input$action>0 & input$action<=2){
isolate({
values<-renderText({
input$checkGroup
})
data<-unlist(strsplit(valores(), split=" "))
print(data)
})
}
})
})
我做了如下程序:
ui.r
library(shiny)
shinyUI(fluidPage(
mainPanel(
textOutput("text1"),
checkboxGroupInput("checkGroup",
label = h3("Alternatives"),
choices = list("A" = 1,
"B" = 2,
"C" = 3,
"D" = 4),
selected = NULL),
actionButton("action", label = "Next")
)
))
server.r
library(shiny)
shinyServer(function(input, output) {
observe({
if(input$action>0 & input$action<=2){
valores<-renderText({
input$checkGroup
})
data<-unlist(strsplit(valores(), split=" "))
print(data)
}
})
})
我已经设法捕获了值 selected 并将它们放入向量中,因此我解决了之前遇到的一个问题。
我现在遇到的问题是,它始终从复选框组输出哪些值 I select 或 deselect,但我只想捕获最后一个值 select在我按下“下一步”按钮后编辑。
有什么帮助吗?我已经查看了文档,但是它非常稀缺。
这是给那只猫剥皮的一种方法。
我们将 isolate
和 reactive
与 actionButton
一起使用,以确保在按下按钮之前不会计算任何内容。通过将输入本身与任何进一步的格式隔离开来,我们可以出于任何目的多次调用它。请注意,如果没有隔离,它将在输入更改时进行评估。
server.R
library(shiny)
shinyServer(function(input, output) {
# store as a vector to be called wherever desired
# evaluated whenever inputs change
datasetInput <- reactive({
perm.vector <- as.vector(input$checkGroup)
perm.vector
})
# call as a text output
output$textOut <- renderText({
input$action # makes sure nothing moves till the button is hit
# isolate prevents datasetInput from reactively evaluating
isolate(datasetInput())
})
# call in a different place as a data table output
output$dataTableOut <- renderDataTable({
input$action # makes sure nothing moves till the button is hit
isolate(df <- data.frame(inputs = datasetInput()))
df
}, options = list(
lengthMenu = list(c(5, 15, -1), c('5', '15', 'All')),
pageLength = 15)
)
})
ui.R
library(shiny)
shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
checkboxGroupInput("checkGroup",
label = h3("Alternatives"),
choices = list("A" = 1,
"B" = 2,
"C" = 3,
"D" = 4),
selected = NULL),
actionButton("action", label = "Next")
),
mainPanel(
h4("Print as text"), textOutput("textOut"),
h4("Print as data table"), dataTableOutput("dataTableOut")
)
)
))
我发现于:http://www.inside-r.org/packages/cran/shiny/docs/isolate
可以将一组句子隔离开来,所以下面的效果很好:
library(shiny)
shinyServer(function(input, output) {
observe({
if(input$action>0 & input$action<=2){
isolate({
values<-renderText({
input$checkGroup
})
data<-unlist(strsplit(valores(), split=" "))
print(data)
})
}
})
})