闪亮:自定义功能在闪亮的应用程序中不起作用

时间:2015-07-19 21:51:18

标签: r shiny

我编写了一个自定义函数,该函数在不闪亮的情况下有效,但是当我尝试在我的闪亮应用程序中使用它时会返回错误

Error in rowMeans(data[, c:x]) : 
'x' must be an array of at least two dimensions

所以它显然与rowMeans调用有关,但是我传递了一个数据帧,我已经更改了将数据框强制转换为数组的功能,但这没有用。我还尝试将函数放在服务器文件顶部的几个位置,在反应式表达式中,以及一个帮助者'文件如其中一个例子中所示,这是我希望它保留的地方。

我已经创建了一个有希望成为重现下面错误的最小示例。感谢您的任何帮助和建议!

shinyApp(
  ui = fluidPage(
    sidebarLayout(
      sidebarPanel(selectInput('block','Choose Block',
                               c('1' = 1,
                                 '2' = 2,
                                 '3' = 3,
                                 '4' = 4,
                                 '6' = 6,
                                 '8' = 8,
                                 '12' = 12))),
      mainPanel(tableOutput("test"))
    )
  ), 
  server = function(input, output) {
    DF<-data.frame(replicate(24,sample(0:10,13,rep=TRUE)))
    block<- function(data, blocks){
      data<-array(data)
      month<-data.frame(seq(0,12))
      testy<-data.frame(month)
      y<-1
      b<-blocks
      a<-0
      while(y<24){
        a <- a + 1;
        y <- a * b;
        c <- y + 1 - b;
        d <- "block";
        e <- as.character(a);
        f <- paste(d,e, sep = '');
        z <- data.frame(rowMeans(data[,c:y]));
        colnames(z)[1]<-f
        testy <- cbind(testy,z)
      }
      return (testy)
    }
    output$test <- renderTable( 
     block(DF,as.numeric(input$block))
    )
  }
)

1 个答案:

答案 0 :(得分:0)

我几乎删除了这个问题,因为它只会增加我的愚蠢问题列表,但我会留下它作为一个例子让人们更多地探索和思考你的Shiny应用程序在被调用/初始化时所做的事情。

我的上述示例不起作用,因为当应用程序初始化时,它调用的是rowMeans(data [1:1]),而这确实只是一个维度而不是两个维度的数组。在提出问题之前,我应该对我计划的所有闪亮电话进行全面测试。