我是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())
}
答案 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都会重置我收集的数据。