我正在创建一个Rshiny 应用程序,它允许用户上传一些临床数据,并根据他们打开的选项卡查看几个不同的图。其中包括折线图、饼图和马赛克图。我可以根据上传的数据和用户输入查看折线图和饼图,但无法显示马赛克图。我收到一条错误消息,提示“找不到对象'输入'”。
我尝试在 R 中使用 ggmosaic(geom_mosaic) 和 structable 包来显示绘图。在我感兴趣的数据表中,有 5 列:REF(2x2 列联表的参考方法结果,它是二进制的——POS 或 NEG 临床结果),结果(4 个差异值:真阳性,假阴性,真阴性,假阳性),值(每个结果的患者数量),样本类型(患者样本的类型 - NS,NP,总体是此列的 3 个可能的数据值)和比较器(POS 或 NEG 临床结果)。在括号中,我已经包含了人们期望每列的值类型。此外,对于我的 R 闪亮马赛克应用程序,我在左侧有几个用户输入,一旦用户选择它们就可以构建应用程序:为 REF 列选择输入,为样本类型列选择输入,选择比较器的输入。我在服务器函数中编写了代码,该函数使用这 3 个输入来构建马赛克图。
编辑:我已在标题为“原始数据”的最顶部链接中附加了我的原始数据。
马赛克图数据表 - 从饼图中获取数据,但以#不同的视觉格式显示
MosaicDF <- reactive({
#display mosaic
Mosaic_filtered <- select(PieData_extracted(),-c(3,5:7))
#data transformation
names(Mosaic_filtered)[1]<-"REF"
Mosaic_filtered$SampleType <- "NS"
Mosaic_filtered$Comparator <- c("POS","NEG","NEG","POS")
Mosaic_filtered$REF <- c("POS","POS","NEG","NEG")
Mosaic_filtered$F2 <- factor(as.character(Mosaic_filtered$Value))
MYRaw <- Mosaic_filtered[rep(rownames(Mosaic_filtered),as.numeric(as.character(Mosaic_filtered$F2))), ]
MYRaw <- as.data.frame(MYRaw)
#update select input for mosaic plot
updateSelectInput(session, inputId = 'REF', label = 'Select Reference column',
choices = names(MYRaw), selected = "")
updateSelectInput(session, inputId = 'SampleType', label = 'Select Sample Type column',
choices = names(MYRaw), selected = "")
updateSelectInput(session, inputId = 'Comparator', label = 'Select Comparator column',
choices = names(MYRaw), selected = "")
return(MYRaw)
})
#display mosaic plot
output$mosaic <- renderPlot({
ggplot(data=MosaicDF())+geom_mosaic(aes(x=product(input$REF,input$Comparator),fill=input$REF))+labs(x="Comparator",y="REF")
})
}
我正在获取数据表(从中构建马赛克图)以显示为输出,但马赛克图本身不会显示。它说:
“错误:找不到对象输入”。
饼图数据表和饼图本身确实出现在该图的选项卡上。(R shiny 应用程序中每个不同的绘图都有 3 个选项卡,用户可以从中选择任何一个,从下拉菜单中选择一些输入,并允许根据输入自动构建应用程序)。
我想知道是否有办法修改我的反应数据表或绘图本身的代码——我应该为 ggplot 更改代码,还是为 Rshiny 格式使用不同的镶嵌包?