【发布时间】:2020-11-29 20:50:06
【问题描述】:
我正在尝试使用函数 table() 和 pickerInput 在 r shiny 创建一个列联表。虽然我没有任何消息错误,但我在 r shiny 上获得的结果是不正确的。我试过的代码和数据如下:
#install.packages("shinydashboard")
library(shinydashboard)
#install.packages("DT")
library(DT)
data<-data.frame(Products=c("A","B","B","B","A","B","A","A","B"),
Clients=c("c1","c1","c2","c3","c3","c3","c3","c3","c3"))
ui<-fluidPage(
box(title="croisement client/produit",status = "info", solidHeader = TRUE, width = 12,
fluidRow(pickerInput('select_Product','Choisir les produits', choices=as.character(unique(data$Products)), selected = "A", options = list(`actions-box` = TRUE),multiple =T),
DT::dataTableOutput("tab_prod"))
)
)
server <- function(input, output,session) {
table1<-function(data){
data_intermediaire<-data[(data$Products==input$select_Product),]
objet_etudie<-as.data.frame.matrix(table(data_intermediaire$Product,data_intermediaire$Clients))
return(objet_etudie)
}
output$tab_prod<-DT::renderDataTable({datatable(table1(data))})
}
shinyApp(ui = ui, server = server)
当我使用 pickerInput 选择产品“A”时,这是正确的结果,但是当我选择产品 A 和产品 B 时,结果是:
C1 C2
A 1 2
B 1 2
应该是这样的:
C1 C2
A 1 3
B 1 4
当我使用此代码使用没有 r 的表时:
data<-data.frame(Products=c("A","B","B","B","A","B","A","A","B"),
Clients=c("c1","c1","c2","c3","c3","c3","c3","c3","c3"))
data_intermediaire<-data[(data$Products=="A")|(data$Products=="B"),]
objet_etudie<-as.data.frame.matrix(table(data_intermediaire$Product,data_intermediaire$Clients))
,我有正确的答案。所以这让我觉得也许我并没有真正理解 pickerInput 是如何工作的......
提前感谢您的建议。
【问题讨论】:
标签: r shiny contingency