当从 selectInput 选择变量时,相关性不起作用,但否则运行得很好

2024-02-16

我正在计算correlation for 各国之间 数量每日新冠病例 & 每日疫苗接种.

two df, 一个用于确诊病例及其他用于疫苗接种:

library(tidyverse)
library(lubridate)
library(glue)
library(scales)
library(tidytext)
library(shiny)
library(shinydashboard)

file_url1 <- "https://raw.githubusercontent.com/johnsnow09/covid19-df_stack-code/main/ts_all_long4.csv"

file_url2 <- "https://raw.githubusercontent.com/johnsnow09/covid19-df_stack-code/main/vaccination_data.csv"

ts_all_long <- read.csv(url(file_url1))
vaccination_data <- read.csv(url(file_url2))

ts_all_long <- ts_all_long %>%
  mutate(date = as.Date(date))

vaccination_data <- vaccination_data %>%
  mutate(date = as.Date(date))

当我使用以上数据时运行相关性 in rmarkdown然后它就起作用了:

ts_all_long %>% 
  left_join(y = vaccination_data,
            by = c("Country.Region" = "location", "date", "continent", "iso3c" = "iso_code")) %>% 
  
  na.omit() %>% 

  group_by(Country.Region) %>% 

  summarise(COR = cor(Confirmed_daily, total_vaccinations),
            total_vaccinations_per_hundred = first(total_vaccinations_per_hundred)) %>% 
  
  
  arrange(COR) %>% 
  na.omit() %>% 
  slice(c(1:15, ( n()-14): n() )) 

Issue:当我在里面使用这个时shiny with SelectInput at total_vaccinations使动态参数然后它给出这个错误:

有问题summarise() input COR。 [31mx[39m 不兼容 尺寸 [34mi[39m] 输入COR is cor(Confirmed_daily, as.numeric(input$id_vaccination_type))。 [34mi[39m 错误 发生在第 2 组:Country.Region =“Argentina”。

ui

fluidRow(
                 style = "border: 1px solid gray;",
                 h3("Vaccination to Cases Correlation Analysis"),
                 
                 column(4, style = "border: 1px solid gray;",
                        selectInput(inputId = "id_vaccination_type", label = "Choose Vaccination Parameter", 
                                    choices = c("total_vaccinations","people_vaccinated","people_fully_vaccinated"), 
                                    selected = "total_vaccinations")
                        ),
                 
                 column(8, style = "border: 1px solid gray;",
                        plotOutput("top_corr_countries", height = "550px") #
                 )

Server

corr_data <- reactive({
        
        corr_data <- ts_all_long %>% 
            left_join(y = vaccination_data,
                      by = c("Country.Region" = "location", "date", "continent", "iso3c" = "iso_code")) %>% 
            
            na.omit() %>% 
            
            group_by(Country.Region) %>% 
            
            summarise(COR = cor(Confirmed_daily, as.numeric(input$id_vaccination_type)) ,
                      total_vaccinations_per_hundred = first(total_vaccinations_per_hundred)) %>% 
            na.omit() %>% 
            arrange(COR) %>% 
            na.omit() %>% 
            slice(c(1:15, ( n()-14): n() ))
    })

output$top_corr_countries <- renderPlot({
        
        corr_data() %>% 
            
            ggplot(aes(x = COR , 
                       y = fct_reorder(Country.Region, -COR),
                       col = COR > 0))  +
            geom_point(aes(size = total_vaccinations_per_hundred)) +
            geom_errorbarh(height = 0, size = 1, aes(xmin = COR, xmax = 0)) +
            geom_vline(xintercept = 0, col = "midnightblue", lty = 2, size = 1) +
            
            theme(
                panel.grid.major = element_blank(),
                legend.position = "NULL") +
            
            labs(title = glue("Top Countries by +/- Correlation with Vaccination as of {max(vaccination_data$date)}"),
                 subtitle = "Size is proportional to Vaccination per Population",
                 y = "", x = "Correlation",
                 caption = "Data source: covid19.analytics
       Created by: ViSa")
        
    })

注意:我还在另一个链接中发布了这个问题,但它听起来更复杂,所以我尝试在这个链接中重新表述它以使其更简单。

其他帖子:无法在为闪亮的变量添加 selectInput 选项时渲染绘图,否则运行得很好 https://stackoverflow.com/questions/67072951/unable-to-renderplot-on-adding-a-selectinput-option-for-variable-in-shiny-which


input$id_vaccination_type是要选择的变量的字符串。

要实际选择该变量的值,您可以将变量的名称转换为symbol 并评估它,例如使用 bang-bang 运算符!!.

所以一种解决方案是:

cor(Confirmed_daily, as.numeric(!! sym(input$id_vaccination_type))

我不确定这是否会让您的应用程序正常工作(我无法在 github 上下载 csv 文件,并且更喜欢dput一个最小的例子),但它应该解决这个特定问题。

这个问题还有其他解决方案。一是使用get代替!! sym(input))。另一种是使用varSelectInput,它返回实际名称而不是字符串(所以这里一开始就不应该出现问题)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当从 selectInput 选择变量时,相关性不起作用,但否则运行得很好 的相关文章

  • 从日期变量创建月末日期

    我有一个包含日期变量的大型数据框 它反映了该月的第一天 有没有一种简单的方法来创建代表该月最后一天的新数据框日期变量 以下是一些示例数据 date start month seq as Date 2012 01 01 length 4 by
  • 无法更新/编辑从 R 中的包(`gratia`)导出的 ggplot2 对象

    我希望我在这里遗漏了一些令人痛苦的明显的东西 我希望更新 例如 修复标题 实验室等 由 生成的 ggplot 对象gratia draw 不太确定为什么我无法更新该对象 有一个简单的解决方案吗 devtools install github
  • 如何在 R 中合并同名列表中的数据框?

    我有一个包含很多数据框的列表 如果它们具有相同的名称 我想合并它们 即合并所有具有相同名称 a 和 b 的数据框 像这样 a lt aaaaa b lt bbbbb c lt ccccc g lt list df1 lt data fram
  • 为什么数据帧上的 is.vector 不返回 TRUE?

    tl dr R 中的向量到底是什么 长版 R 中很多东西都是向量 例如 数字是长度为 1 的数值向量 is vector 1 1 TRUE 列表也是一个向量 is vector list 1 1 TRUE 好的 所以列表是一个向量 显然 数
  • R中的重叠矩阵

    我有以下数据框 id channel 1 a 1 b 1 c 2 a 2 c 3 a 我想创建并重叠矩阵 它基本上是一个方阵 行和列标签为 a b c 表中的每个条目显示每个通道共有多少个 id 例如 在上面的例子中 矩阵看起来像 a b
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 如何在 data.table 中分组后使用条件计算行数

    我有以下数据框 dat lt read csv s1 s2 v1 v2 a b 10 20 a b 22 NA a b 13 33 c d 3 NA c d 4 5 NA c d 10 20 dat gt A tibble 6 x 4 gt
  • 在R中循环子文件夹

    我正在 R 环境中包含多个子文件夹的文件夹中工作 我想要循环遍历多个子文件夹 然后在每个子文件夹中调用 R 脚本来执行 我想出了下面的代码 但我的代码似乎添加了 到子文件夹列表 我收到错误 文件中的错误 文件名 r 编码 编码 无效的 描述
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • picker输入字体或背景颜色

    我在闪亮的仪表板中使用 pickerInput 这很好 除了一个问题 背景颜色和字体颜色太相似 使得过滤器选择难以阅读 有什么办法可以改变背景或字体颜色吗 如果可能的话 我想继续使用 pickerInput 但如果有一个带有 selectI
  • 将列表中的每个元素转换为数据框中的一列

    假设我有以下列表 d library combinat d permn c a b c 这看起来如下 1 1 a b c 2 1 a c b 3 1 c a b 4 1 c b a 5 1 b c a 6 1 b a c 是否可以将此列表的
  • 我可以使用哪个 R 函数来查找两条线的交点?

    我刚刚研究了 stackoverflow 上所有的 在 R 中寻找交集 问题 它们要么是关于曲线 要么是关于分布像这个 https stackoverflow com questions 20519431 finding point of
  • 行对名称中具有特定模式的列求和

    我有一个像这样的数据表 DT lt ata table data table ref rep 3L 4L nb 12 15 i1 c 3 1e 05 0 044495 0 82244 0 322291 i2 c 0 000183 0 155
  • 闪亮的应用程序包:css 和所有 www/ 目录内容

    我正在尝试将 Shiny 应用程序转换为 R 包 但我在处理有关 www 目录以及 松散 文件的所有问题时遇到了问题 我闪亮的应用程序运行得很好 但是当我尝试 打包它 时 它不起作用 我闪亮的应用程序目录 my shiny app R ut
  • 在 RMarkdown 输出到 PDF 时缩进而不添加项目符号点或编号

    之前有人问过如何在没有项目符号的情况下缩进文本 RMarkdown 中的点 但这是针对 HTML 输出的 在 RMarkdown 中缩进而不添加项目符号点或数字 https stackoverflow com questions 47087
  • 在包加载之前如何知道 R 中特定函数属于哪个包?

    例如 我知道许多流行的功能 例如tbl df 我通常不记得它属于哪个包 即data table or dplyr 所以我必须始终记住并加载一个包 但我做不到 tbl df除非我加载了正确的包 在 R 控制台本身加载或安装包之前 有没有办法知
  • 使用选定因子水平的值向 ggplot-barchart 添加水平线

    在这个情节中 df lt data frame factor as factor c rep A 3 rep B 3 Treatment c rep c A B C 2 values runif 6 0 1 ggplot df aes Tr
  • 从数据框中绘制多条平滑线

    我对 R 比较陌生 我正在尝试绘制从 csv 文件加载的数据框 数据由 6 列组成 如下所示 xval col1 col2 col3 col4 col5 第一列 xval 由一系列单调递增的正整数 例如 10 40 60 等 组成 其他列
  • 增加雷达图中长轴标签的空间

    我想创建一个雷达图ggirahExtra ggRadar 问题是我的标签很长并且被剪掉了 我想我可以通过添加在标签和绘图之间创建更多空间margin margin 0 0 2 0 cm to element text in axis tex
  • R中IF函数的使用

    我正在短跑ifR 中的函数 但收到以下警告消息 In if runif 50 0 1 lt 0 69 the condition has length gt 1 and only the first element will be used

随机推荐