Shiny的超级新人。我正在尝试开发一个应用程序来计算不同的相关/协议系数以及显示图形。
我对如何从下拉菜单中链接我的测试选项感到迷茫。在这一点上,我只能使用三种选择--Spearman,Pearson和Kendall进行相关性测试。我想要使用Cohen的kappa测试(使用包fmsb和命令Kappa.test(selectedData()))。我尝试if else语句将Kappa合并到renderPrint命令中,但我不断收到错误消息。
在这个阶段,我不太关心每个测试使用什么样的适当变量。我在下面发布了我的代码。
由于
library(shiny)
# Loading package for Kappa test
library(fmsb)
# Generating simulated data
dat <- as.data.frame(dat)
ui <- fluidPage(
pageWithSidebar(
headerPanel('Correlation coefficient and scatter plots'),
sidebarPanel(
selectInput('xcol', 'X Variable', names(dat)),
selectInput('ycol', 'Y Variable', names(dat),
selected=names(dat)[[2]]),
selectInput(inputId = "measure", label = "Choose the correlation measure that you want to use",
choices = c("Spearman correlation" = "spearman",
"Pearson correlation" = "pearson",
"Kendall's W" = "kendall",
"Cohen's kappa" = "kappa"))
),
mainPanel(
plotOutput('plot1'),
verbatimTextOutput('stats')
)
)
)
server <- function(input, output){
# Combine the selected variables into a new data frame
selectedData <- reactive({
dat[, c(input$xcol, input$ycol)]
})
output$plot1 <- renderPlot({
plot(selectedData(),pch = 20, cex = 3, col = "red")
})
output$stats <- renderPrint({
round(cor(selectedData(), method = input$measure), 3)
})
}
shinyApp(ui = ui, server = server)
答案 0 :(得分:2)
你可以在renderPrint
函数中输入你的条件:
output$stats <- renderPrint({
measure <- input$measure
mydat <- selectedData()
if(measure == "kappa") {
Kappa.test(mydat[,1], mydat[,2])
} else {
round(cor(mydat, method = measure), 3)
}
})