1

これは私が持っているものであり、問​​題は ui.R が最初に実行されるため、関数 progs() が定義されていない (またはリアクティブ関数の実行方法がわからない) ことだと思います。私のエラーは次のようになります。

lapply(obj, function(val) { : 関数 "progs" が見つかりませんでした

私のコードは次のようになります。

ui.R

library(shiny)
progs <- list.files("C:/Users/OIT-Classroom/Desktop/ODP/Report 1/aggregate/")
progs <- gsub('.{6}$', '', progs)

shinyUI(bootstrapPage(
  tabsetPanel(id="Reports",
              tabPanel("Report 1",
                       sidebarPanel(
                         p("text"),
                         radioButtons("choices", choices = progs(), label = "Programs")
                      ),
                       mainPanel(
                         tableOutput('age')
                       )
              ),
              tabPanel("Report 2",
                       sidebarPanel(
                         p("text"),
                         radioButtons("choices", choices = progs(), label = "Programs")
                       ),
                       mainPanel(
                         tableOutput('psc5'),
                         plotOutput('psc5p'),
                       )
              ) 
  )
))

サーバー.R

library(shiny)

shinyServer(function(input, output, session) {

  progs <- reactive({
    progs <- list.files(paste("C:/Users/OIT-Classroom/Desktop/ODP/", input$Reports, "/aggregate/", input$choices, ".RData", sep = ""))
    gsub('.{6}$', '', progs)
  })

  output$age <- function(){
    paste(knitr::kable(
      age, format = 'html', output = FALSE,
      table.attr="class='data table table-bordered table-condensed'"),
      sep = '\n')
  }
  output$psc5 <- function(){
    paste(knitr::kable(
      psc5, format = 'html', output = FALSE,
      table.attr="class='data table table-bordered table-condensed'"),
      sep = '\n')
  }
  output$psc5p <- renderPlot({
    plot(psc5[, 2:3], type="b", ylim=c(0, 40), ylab="", xaxt="no", xlab="", col="red", main="Figure 2: Problem Severity Comparison of Mean Scores for Children Ages 5+", cex.main=0.8, cex.axis = 0.8, font.main = 1, family="serif")
    par(new = T)
    axis(1, at=1:2, labels=c("Intake", "Discharge"), col.axis="black", las=1, cex.axis =0.8)
  })
})
4

1 に答える 1

2

ラジオボタンの選択肢を自動的に更新しようとしていると思います。progs呼び出そうとしている関数は UI スクリプトで定義されていないため、エラーの原因はそこにあります。サーバー スクリプトのどこかでobserveおよび関数を使用してみてください。updateRadioButtons次のようになります。

observe({
  updateRadioButtons(session, "choices", choices = progs())
})

その後、UI スクリプトに入りprogs()、ラジオ ボタンの定義の一部を justに変更すると、UI の最初に定義した変数progsで機能するはずです。progs私はファイルを持っていないので、これをすべてテストすることはできませんが、それはあなたを近づけるはずです.

于 2015-08-11T18:40:42.950 に答える