错误:尺寸不正确Shiny

时间:2018-08-26 20:55:44

标签: checkbox shiny numbers dimension

我是Shiny的新手。

运行以下代码时,我收到消息“尺寸错误”。

我想在NameGen表的每一行旁边放置一个checkboxgroupinput,这是selectInput的结果。然后,如果选中了一行,它将进入mainPanel中的新表中。

ui.r

library(shiny)

fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput("select","Type",c("C","R","V"),selected=NULL),
      uiOutput("choose_row")
    ),
    mainPanel(
      tableOutput("result")
    )
  )
)

server.r

library(shiny)

function(input,output){
  data1<-reactive({
    setwd("/Users/me/Desktop/DirectoryAlR")
    AlData<-read.delim2("AlR.csv",sep=";",stringsAsFactors = FALSE)
    NameGen<-NULL
    for(i in 1:nrow(AlData)){
      if(AlData[i,7]==input$select){
        NameGen[i]<-AlData[i,1]
      }else{
        NameGen[i]<-NA
      }
    }
    NameGen<-NameGen[!is.na(NameGen)]
    return(NameGen)
    })

  output$choose_row<-renderUI({
    rn<-rownames(data1())
    checkboxGroupInput("box","",rn,selected=NULL)
  })


  result<-reactive({
    data2<-data1()
    data2[input$box,,drop=FALSE]
  })


  output$result<-renderTable(result())
}

2 个答案:

答案 0 :(得分:0)

尝试一下。

data2[, input$box, drop = FALSE] 

代替

 data2[input$box,,drop=FALSE]

答案 1 :(得分:0)

我正在处理矢量而不是数据帧,然后我以这种方式部分固定:

ui.r

library(shiny)

fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput("select","Type",c("C","R","V"),selected=NULL),
      uiOutput("choose_row")
    ),
    mainPanel(
      tableOutput("result")
    )
  )
)

server.r

library(shiny)

function(input,output){
  data1<-reactive({
    setwd("/Users/me/Desktop/DirectoryAlR")
    AlData<-read.delim2("AlR.csv",sep=";",stringsAsFactors = FALSE)
    NameGen<-NULL
    for(i in 1:nrow(AlData)){
      if(AlData[i,7]==input$select){
        NameGen[i]<-AlData[i,1]
      }else{
        NameGen[i]<-NA
      }
    }
    NameGen<-NameGen[!is.na(NameGen)]
    return(NameGen)
    })

  output$choose_row<-renderUI({
    checkboxGroupInput("box","",data1(),selected=NULL)
  })


  result<-reactive({
    input$box
  })


  output$result<-renderTable(result())
}

尽管如此,我仍然很难在mainPanel中收集checkboxgroupInput,因为每次更改输入$ select都会重置我收集的数据。