【发布时间】:2016-12-26 07:44:17
【问题描述】:
一个例子:
UI.R
library(shiny)
shinyUI(fluidPage(
titlePanel("Example"),
sidebarLayout(
sidebarPanel(
radioButtons("orderdata", "Sort by :",
c("Name" = "name",
"MRDNo" = "mrdno"
))
),
mainPanel(
uiOutput("deatilscv")
)
)
))
Server.R
library(shiny)
library(shinyjs)
shinyServer(function(input, output) {
observeEvent(input$orderdata,
{
output$deatilscv <- renderUI({
if(input$orderdata=="name")
{
mid<-c("1","2")
name<-c("a","b")
datatable1 <- data.frame(mid,name)
fluidPage(shinyjs::useShinyjs(),
actionButton("button1", "CLICK") )
}
else if(input$orderdata=="mrdno")
{
mid<-c("3","4")
name<-c("c","d")
datatable2 <- data.frame(mid,name)
fluidPage(shinyjs::useShinyjs(),
actionButton("button1", "CLICK") )
}
})
})
observeEvent(
input$button1,{
a <- datatable1[1,2] #this shows an error object 'datatable1' not found
print(a)
})
observeEvent(
input$button2,{
a <- datatable2[1,2] #this shows an error object 'datatable2' not found
print(a)
})
})
如上图程序有两个错误。观察事件中如何访问数据表?
【问题讨论】:
-
您的数据是在
observeEvent函数中定义的...所以它在按钮函数中是未知的。全局或直接在shinyServer内部定义数据。 -
先生,但我希望只有在单击单选按钮时才为 datatable1 和 datatable2 分配一个数据框,这就是为什么我将数据放在 observeEvent 中。
-
尝试熟悉反应式表达式,如shiny.rstudio.com/tutorial/lesson6 这是您的数据如何根据单选按钮选择更新以及您如何在其他功能中使用数据
-
我使用了 reactiveEvent 而不是 observeEvent 但它不起作用,先生。