我正在使用R shiny来构建Web应用程序,其中一些正在利用伟大的传单功能.
我想创建一个定制的高级弹出窗口,但我不知道如何继续.
你可以看看我在github上为这篇文章创建的项目中可以做些什么,或者直接在shinyapp.io 这里
弹出窗口越复杂,我的代码就越奇怪,因为我有点以一种奇怪的方式组合R和html(参见我在server.R中定义我的custompopup'i'的方式).
还有更好的方法吗?构建此类弹出窗口有哪些好的做法?如果我打算根据点击的标记显示图表,我应该提前构建它们,还是可以"动态"构建它们?我怎样才能做到这一点?
非常感谢您对此的看法,请不要犹豫,在这里分享您的答案或直接更改我的github示例!
问候
我有一个带有两个选项卡的闪亮应用程序,每个选项卡都有一个包含 numericInputs 的 DataTable,因此我必须绑定和取消绑定 DataTable 才能使 numericInputs 工作。不幸的是,这造成了反应性问题,我希望有人可以提供帮助。在下面的示例中,如果您更改侧边栏上确定表中数据的输入,则只有打开的选项卡中的表才会实际更新/反应。
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
sidebarPanel(
# choose dataset
selectInput("select","Choose dataset",c("mtcars","iris"))),
# display table
mainPanel(
tabsetPanel(tabPanel("one",DT::dataTableOutput('x1')),
tabPanel("two",DT::dataTableOutput('x2'))),
tags$script(HTML("Shiny.addCustomMessageHandler('unbind-DT', function(id) {
Shiny.unbindAll($('#'+id).find('table').DataTable().table().node());
})")))),
server = function(session, input, output) {
# function for dynamic inputs in DT
shinyInput <- function(FUN,id,num,...) {
inputs <- character(num)
for (i in seq_len(num)) {
inputs[i] <- as.character(FUN(paste0(id,i),label=NULL,...))
}
inputs
}
# function to read DT inputs
shinyValue <- function(id,num) {
unlist(lapply(seq_len(num),function(i) {
value <- input[[paste0(id,i)]]
if (is.null(value)) NA …Run Code Online (Sandbox Code Playgroud) 我有一个包含三列和可变行数的表。我想创建一个列,以便新列的每一行都包含一个值为 Yes/No 的 selectInput。
简而言之,我如何自动生成等于表中行数的 selectInput
这是一个简单的代码:
library(shiny)
library(rhandsontable)
ui <- fluidPage(
tableOutput('Simpletable')
)
server <- function(input,output,session)({
data <- data.frame(c1=c(5,10,15), c2=c(3,6,9) , diff=c(0,0,0), select= as.logical( c(FALSE,FALSE,FALSE)))
output$Simpletable <- renderTable(
data
)
})
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
对于这个表,三个 selectInputs 应该出现在表的旁边
这可能吗 ?
谢谢