我刚刚开始尝试使用 Shiny ,我在使用 dplyr 'group_by'功能时遇到了问题。
我的一般想法是,我有一个数据集,其中包含许多数值变量和一个变量,通过这些变量可以对这些变量进行分组(在我的情况下是19个国家,因此变量范围从1到19)。 现在,我想使用 metafor 包对每个国家/地区的两个变量之间的相关性进行元分析。 所以我想分别计算每个国家的两个选定变量之间的相关性,然后将它们放在一个荟萃分析中,最后显示这些效应的森林图。
我已经使用mtcars数据集作为我已经走了多远的例子:
UI :
library(shiny)
library(metafor)
library(dplyr)
ui <- fluidPage(
sidebarPanel(
selectInput("x", label = "Choose Variable I",
choices = c("Displacement (cu.in.)", "Horsepower", "Rear axle ratio",
"Weight (1000lbs)", "1/4 mile time"), selected = "Displacement (cu.in.)"),
selectInput("y", label = "Choose Variable II",
choices = c("Displacement (cu.in.)", "Horsepower", "Rear axle ratio",
"Weight (1000lbs)", "1/4 mile time"), selected = "Horsepower")
),
mainPanel(
plotOutput(outputId = "plot")
)
)
服务器:
server <- function(input, output) {
output$plot <-renderPlot({
data_x <- switch(input$x,
"Displacement (cu.in.)" = mtcars$disp,
"Horsepower" = mtcars$hp,
"Rear axle ratio" = mtcars$drat,
"Weight (1000lbs)" = mtcars$wt,
"1/4 mile time" = mtcars$qsec)
data_y <- switch(input$y,
"Displacement (cu.in.)" = mtcars$disp,
"Horsepower" = mtcars$hp,
"Rear axle ratio" = mtcars$drat,
"Weight (1000lbs)" = mtcars$wt,
"1/4 mile time" = mtcars$qsec)
meta_main <- mtcars %>%
group_by(gear) %>%
summarise(participantID = n(),
correlation = cor(data_x, data_y, use = "complete.obs"))
meta <- rma(ni=participantID, ri=correlation,
method="REML", measure="COR", data=meta_main)
forest(meta)
})
}
shinyApp(ui = ui, server = server)
在示例中,我按“齿轮”(有3个级别)进行分组,并选择了变量'Displacement','Horsepower','Rear shaft ratio','Weight'和'1/4英里时间'。
最终输出显示选择小部件以及森林图。 然而,所有“齿轮”水平的相关性是相同的。因此,我怀疑'group_by'功能无法正常工作。
我尝试在网上建议使用'group_by_',但它没有太大变化。
关于'group_by'如何与Shiny合作的任何想法?
答案 0 :(得分:1)
尝试此服务器功能,首先应加载.get()
包。
ObservableField